お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2009-09-17 21:57:48

zunchax
新しいメンバ
登録日: 2009-09-17

外出先(友人宅など)からSSHでアクセスできない

件名の通りですが、外出先からSSH(TeraTermや、WinSCP(SFTP))でアクセスしたいのですが、
どうにも上手くいきません…。

自分なりに結構調べたつもりなのですが、お手上げの状態です。
こういった場での質問は初めてなので、必要な情報を伝えられるか自信がありませんが、
助言なりして貰えると助かります。

ちなみに、Ubuntu 9.04 Server Editionを使っています。
OpenSSHは、Ubuntuインストール時に選択してインストールしました。



ローカルネットワーク内では、TeraTerm/WinSCPを使ってサーバーにアクセスすることができます。
ですが、外出先からアクセスした場合、Connection timed out的な感じでアクセスできません。

現状やったことといえば…

 ・sshd_config編集
   →ポート変更(Port XXXX)
   →ルートログイン禁止
   →パスワード認証禁止
   →鍵を使った認証有効化(RSA)
   →ログイン可能ユーザーの制限
   ※ListenAddressとかは、デフォルトのままコメントアウト状態です。

 ・ufw(FW?)の設定
   →基本deny
   →allow tcp/udp 80
   →allow tcp/udp XXXX
   →ufw enable
   ※udpは良く分からず解放してます…
   ※薄々必要無いのでは?と思ってるんですが。

・ルータのポート解放
   →WAN⇔LAN(サーバー) TCP/Port XXXX

う~~ん、確かこんな感じだったと思います。

あとは…、外出先からのpingは通ります。
また、ポート解放チェックなどのサイトで確認したところ「Port XXXX」も開いているようです。
サーバー上に設置してあるWEBサイト(XOOPS)も外出先から閲覧/ログインすることができる状態です。

ちなみに、このサーバーとは別でNASの
FTP(セキュアじゃない…)もWAN側に公開しているのですが、
こちらは外部からアクセスすることができます。



以上、自分が思いつく情報はこんな感じになります。

最終的には、NASの代わりにSFTPでファイルアクセスしたいだけで、
TeraTerm経由での外出先からのSSH接続は、特に必要ないと思っています。

意味不明なことや、情報的に足りないことなどあるかと思いますが、
ご教授の程よろしくお願いします。

オフライン

 

#2 2009-09-17 22:24:38

kk
メンバ
From: Hyogo
登録日: 2008-03-30

Re: 外出先(友人宅など)からSSHでアクセスできない

どもです。

気になるところとしては、
・sshd_configを編集後にsshdの再起動を行っているか
・事前にサーバ内で、アクセスの確認をしてみたか(ssh localhost)

といったところでしょうか。前者を行っているのであれば、
sshd_configを再確認。両者とも実施済みであればufw、
ufwを無向にしても状況変わらずであれば、ルータ側チェック
といった感じで段階的に進めていけば良いかと思います。

ufwについては、ぱっと見た限りは問題は無いかと思いますが
ルータ側でパケットフィルタリングをしているのであれば、そこまでガチガチにしておく
必要もないかもしれません(この辺は個人感もあるので。。。)

あと、well known portに関しては、ポートフォワーディングで他サーバとバッティングしている
といった理由で無い限りは、22番で待ち受けておいたほうが良いかもしれませんね。。。
#どこで待ち受けていたとしても、アタックを受けるときは受けますので。。

オフライン

 

#3 2009-09-17 23:07:08

ack
メンバ
登録日: 2007-06-01

Re: 外出先(友人宅など)からSSHでアクセスできない

zunchax による投稿:

Connection timed out的な感じでアクセスできません。

sshd_config に

コード:

UseDNS no

を追加設定してみるのはどうでしょうか。
これはDNSでリモートホスト名を確認しようとする動作を止めるものです。

オフライン

 

#4 2009-09-18 01:23:02

zunchax
新しいメンバ
登録日: 2009-09-17

Re: 外出先(友人宅など)からSSHでアクセスできない

アドバイスありがとうございますっ。

kk による投稿:

・sshd_configを編集後にsshdの再起動を行っているか

とのことですが、基本的に編集後は

コード:

$ sudo /etc/init.d/ssh restart

のようにするようにしています。

また、サーバーについては夜に一度shutdownし、朝に改めて起動してから外出しているので、
その際sshdも再起動されているかな?と思っています。

kk による投稿:

・事前にサーバ内で、アクセスの確認をしてみたか(ssh localhost)

次にこちらですが、確かにローカルネットワーク内では試してましたが、サーバー内では試していなかったので、やってみました。
ひとまず、問題なくlocalhostにつながることを確認いたしました。

ufw、well known portにつきましても、できれば最終形態としては、
締めれるところは締めたいと思っていますが、まずはつなげること優先ですので・・・

コード:

$ sudo ufw disable
$ sudo ufw status
状態: 非アクティブ

としてファイヤーウォールを停止し、ポートも「22」に戻した上で、ルーターも再設定しました。

ack による投稿:

sshd_config に
UseDNS no
を追加設定してみるのはどうでしょうか。

こちらについても、同時に設定してみました。

コード:

ListenAddress 0.0.0.0

のコメントアウトを外して、IPv6を無効にしてタイムアウトが云々というお話も、どこかのページで見かけたのですが、
そちらとかも関係ないでしょうか?(現状は、コメントアウトしてます)

あと、sshd_configのマニュアルの解説で、ListenAddressは

デフォルトでは全てのローカルアドレスが有効

と言っていますが、これは逆に言うと・・・、ローカルアドレス以外は無効ってことではない???
基本的に、外部(WAN)からのアクセスを許可する作業をやった覚えがないのでこの辺り怪しい・・・とか、勝手に思っているのですが。

ひとまず、この状態で、再度localhost、ローカルネットワーク内のクライアントPCから接続できることを再度確認しました。
外部からポートが解放されていることも確認してあります。

明日にでもこの状態で接続できるか確認してみますっ。



最後に、現状のsshd_configを貼り付けさせていただきます。
何か気づきの点などありました、ご指摘いただけますと幸いです。
また、その他の箇所でも設定すべきところなどありましたら
ご教授のほど宜しくお願いします。

コード:

# Package generated configuration file
# See the sshd(8) manpage for details
# What ports, IPs and protocols we listen for

#==========================================================
# デフォルトのポートを使わないのを習慣づけよう(22⇒****)
Port 22
#----------------------------------------------------------
# フォーラムのアドバイスでwell known port(22)に戻してみる
# Port ****
#==========================================================

# Use these options to restrict which interfaces/protocols sshd will bind to
#=====================================================
# 許可するアドレスを指定します
# デフォルトでは全てのローカルアドレスが有効らしい
#-----------------------------------------------------
#ListenAddress ::
#ListenAddress 0.0.0.0
#=====================================================

Protocol 2

# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes

# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 768

# Logging
SyslogFacility AUTH
LogLevel INFO

# Authentication:
LoginGraceTime 120

#======================================
# ルートによるログインを禁止(yes⇒no)
# PermitRootLogin yes
#---------------------------------------
PermitRootLogin no
#=======================================

StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile    %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes

# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Change to no to disable tunnelled clear text passwords
#=============================================
# パスワードによる認証を禁止します(yes⇒no)
#PasswordAuthentication yes
#---------------------------------------------
PasswordAuthentication no
#=============================================

# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no

#MaxStartups 10:30:60
#Banner /etc/issue.net

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server

UsePAM yes


#======================================================
# フォーラムのアドバイスで、DNSをOFFにしてみる
# リモートホスト名の解決にDNSを使用しなくなるとのこと。
#------------------------------------------------------
UseDNS no
#======================================================

#===========================================
# 念のためアクセスできるユーザーを制限
# 例)
# AllowUsers ******* hoge1 hoge2
#-------------------------------------------
AllowUsers ******* *********
#===========================================

オフライン

 

#5 2009-09-18 09:14:04

zunchax
新しいメンバ
登録日: 2009-09-17

Re: 外出先(友人宅など)からSSHでアクセスできない

う~~ん、、、駄目でした。状況は全く変わっていない感じです。
何か原因を調査する方法とかあればいいんだけど。
今日の深夜にでも、別の家でもアクセスできないか試してみようと思います。

何か思いつくことや、気になる点があればお願い致します。

オフライン

 

#6 2009-09-18 10:24:21

ry
メンバ
登録日: 2008-07-30

Re: 外出先(友人宅など)からSSHでアクセスできない

外部から telnet で SSH のポート (#4 の設定だと 22) に接続して試してください

telnet WWW.XXX.YYY.ZZZ 22

または

telnet ssh-server.example.com 22

ssh サーバーに接続できるなら SSH-2.0-OpenSSL_5.1p1 Debian-3ubuntu1 のような文字列が表示されるはずです (ssh サーバーのバージョンによって文字列は若干異なります)

このような文字列が表示されないなら、念のためにルーターの設定をもう一度確認してください

オフライン

 

#7 2009-09-18 18:27:11

zunchax
新しいメンバ
登録日: 2009-09-17

Re: 外出先(友人宅など)からSSHでアクセスできない

アドバイスありがとうございます!

WindosXPにCygwinを入れていたので、それを使って早速試してみました。

コード:

$ telnet ドメイン名 22
Trying xxx.x.xxx.xx... [暫く間がある]
telnet: Unable to connet to remote host: Connection timed out

※IPでも試しましたが、全く同じ結果でした。

と表示されました…。

同サーバーのポート80や、サーバーとは別のFTPのポート21は、ひとまずconnectできるようです。
また、ルータで開いていないポート…、例えば50などを指定した場合は、22と同じ動作を示しました。

これは、ルーターの設定が間違っているってことなんでしょうか…。
ルーターの設定は「慣れ」でやっているところもあったため、先ほど「SSH 公開サーバー」で検索しました。
すると、一番上にドンピシャの内容が引っかかったので、それと見らべて見たいと思います。
今、外出先なのでルーターの確認はできませんが、帰ったら見直してみます。



ところで、アクセスがサーバーまで到達していないと判断するための材料は何かありませんか?
今後のために知っておきたいのですが…、/var/log/auth.logでしょうか?
確かに、/var/log/auth.logには、ログインを弾いた、みたいなログは残ってなかったような気がします。

オフライン

 

#8 2009-09-18 18:55:19

avidya
ゲスト

Re: 外出先(友人宅など)からSSHでアクセスできない

zunchaxさん による投稿:

ところで、アクセスがサーバーまで到達していないと判断するための材料は何かありませんか?

 御自身のサーバなので mmap 等でポートスキャンしてみるとか。

 

#9 2009-09-18 18:58:26

avidya
ゲスト

Re: 外出先(友人宅など)からSSHでアクセスできない

# typo

- mmap
+nmap

 

#10 2009-09-18 19:09:50

ry
メンバ
登録日: 2008-07-30

Re: 外出先(友人宅など)からSSHでアクセスできない

#7の zunchaxさん による投稿:

ところで、アクセスがサーバーまで到達していないと判断するための材料は何かありませんか?
今後のために知っておきたいのですが…、/var/log/auth.logでしょうか?
確かに、/var/log/auth.logには、ログインを弾いた、みたいなログは残ってなかったような気がします。

/var/log/auth.log にはログイン以降の記録しか残らないみたいです
もしかすると、/etc/ssh/sshd_config に LogLevel=VERBOSE (または DEBUG, DEBUG2, DEBUG3 後者ほど詳細になる) を付けて sshd を再起動すれば、接続時から記録されるかもしれません        自分では試したことがありません:P

それよりももっと確実なのは、ルーターのログを確認することですが、ルーターの機種によってはそれも難しいかもしれません

オフライン

 

#11 2009-09-19 00:10:15

kk
メンバ
From: Hyogo
登録日: 2008-03-30

Re: 外出先(友人宅など)からSSHでアクセスできない

流れ的にはルータが一番臭そうですが、とりあえずそこは他のポートでは
問題なさそうなので、外して考えます。

サーバ起因で考えると、hosts.allowやhosts.denyも考えられますが、
このあたり、何かかいていたりしますでしょうか?

オフライン

 

#12 2009-09-19 07:39:18

ry
メンバ
登録日: 2008-07-30

Re: 外出先(友人宅など)からSSHでアクセスできない

#10 の補足

SSH サーバーで接続されたことをログに出力する方法を実際に試してみました

まずは #10 で間違えていた部分を訂正、/etc/ssh/sshd_config に記述する LogLevel の書式は LogLevel VERBOSE のように = ではなく空白で区切るのが正解

ということで、/etc/ssh/sshd_config に [/b]LogLevel VERBOSE[b] と記述すれば、/var/log/auth.log に 「Connection from WWW.XXX.YYY.ZZZ port N」のような行が記録されます

オフライン

 

#13 2009-09-19 16:35:04

zunchax
新しいメンバ
登録日: 2009-09-17

Re: 外出先(友人宅など)からSSHでアクセスできない

お返事遅れてしまい、申し訳ないです。
別宅での外部接続を試すのが相手方の都合で、本日の夜になりました。
鍵も手渡しで渡したので、その際にがっつり検証してみたいと思っています。

[qoute=avidya]御自身のサーバなので nmap 等でポートスキャンしてみるとか。[/qoute]
このコマンドでポートスキャンをかけれるんですね、初めて知りました。
入っていなかったのでapt-getでインストールしておきました。
今度、外出先に行った際に試してみたいと思います!

ちなみに、localhostで試したところ↓のような感じでした。

コード:

$ sudo nmap localhost

Starting Nmap 4.76 ( http://nmap.org ) at 2009-09-19 16:01 JST
Warning: Hostname localhost resolves to 2 IPs. Using 127.0.0.1.
Interesting ports on localhost (127.0.0.1):
Not shown: 994 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
・・・etc

[qoute=kk]サーバ起因で考えると、hosts.allowやhosts.denyも考えられますが、
このあたり、何かかいていたりしますでしょうか?[/qoute]
/etc/host.allow、/etc/host.deny、両方確認いたしました。
共に、コメント以外のものは記述されていないようです。
問題ないでしょうか?

[qoute=ry]/var/log/auth.log にはログイン以降の記録しか残らないみたいです
もしかすると、/etc/ssh/sshd_config に LogLevel=VERBOSE (または DEBUG, DEBUG2, DEBUG3 後者ほど詳細になる) を付けて sshd を再起動すれば、接続時から記録されるかもしれません
SSH サーバーで接続されたことをログに出力する方法を実際に試してみました
[qoute]
わざわざ申し訳ないです。
ひとまず、VERBOSEにしてもう少し詳しいログを参照してみます。
・・・ところで、SSHのポートを今回XXXX⇒22に変更したわけですが、
今日再びログを見てみるとインドと中国から、ガッツリとアタックを受けているようです。(汗)

検証が終わったらポートはwell known portから変更しておこうと思いました・・・。

アタックにはIPと、ユーザー名だけで、ポート番号は記載されていないのですが(LogLevel INFOだから?)
もしかして、外部から22でアクセスしてきたということでしょうか?
今回、外部アクセスがうまくいかないのは、外出先のポート22のLAN⇒WANが閉じられちゃってるからなんだろうか・・・。
分からなくなってきました。

オフライン

 

#14 2009-09-19 16:36:44

zunchax
新しいメンバ
登録日: 2009-09-17

Re: 外出先(友人宅など)からSSHでアクセスできない

あ、タグ間違ってました。(汗)

オフライン

 

#15 2009-09-19 17:03:20

zunchax
新しいメンバ
登録日: 2009-09-17

Re: 外出先(友人宅など)からSSHでアクセスできない

ry による投稿:

外部から telnet で SSH のポート (#4 の設定だと 22) に接続して試してください
telnet WWW.XXX.YYY.ZZZ 22
または
telnet ssh-server.example.com 22
ssh サーバーに接続できるなら SSH-2.0-OpenSSL_5.1p1 Debian-3ubuntu1 のような文字列が表示されるはずです (ssh サーバーのバージョンによって文字列は若干異なります)

このような文字列が表示されないなら、念のためにルーターの設定をもう一度確認してください

今、別宅からtelnetしてもらったところ

コード:

SSH-2.0-OpenSSL_5.1p1 Debian-3ubuntu1

と、表示されたとの連絡を受けました。

どうやら、もう一軒の外出先(A宅)ではSSH(22)のLAN⇒WANを閉じているんじゃないかと思います。
80と、21のポートはスルーしてるっぽぃんですが・・・。
A宅IPからポート21でアクセスを受けたら、22に転送。みたいなことをすればサーバーのSSHにもアクセスできるんでしょうか・・・。
でも、その場合ってA宅から現状の21のFTPはアクセスできなくなりますよね。

以上、取り急ぎご連絡いたします。

オフライン

 

#16 2009-09-19 17:58:18

ry
メンバ
登録日: 2008-07-30

Re: 外出先(友人宅など)からSSHでアクセスできない

#15の zunchaxさん による投稿:

どうやら、もう一軒の外出先(A宅)ではSSH(22)のLAN⇒WANを閉じているんじゃないかと思います。

別宅から zunchax さんの SSH サーバーへの接続が成功していることからしても、それが正解っぽい雰囲気が濃厚....


#15の zunchaxさん による投稿:

A宅IPからポート21でアクセスを受けたら、22に転送。みたいなことをすればサーバーのSSHにもアクセスできるんでしょうか・・・。
でも、その場合ってA宅から現状の21のFTPはアクセスできなくなりますよね。

どこで ポート 21 から 22 に転送するかによって、A宅からポート 21 での FTP 接続ができなくなるかは変わります
そんな変則的なことをするより、素直に A宅からインターネットへ出るときの制限を少し緩めて (ポート 22 への通信を許可して) やるのが、もっとも確実だと思います

オフライン

 

Board footer

Powered by FluxBB