
Ubuntu日本語フォーラム

ログインしていません。
件名の通りですが、外出先から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接続は、特に必要ないと思っています。
意味不明なことや、情報的に足りないことなどあるかと思いますが、
ご教授の程よろしくお願いします。
オフライン
どもです。
気になるところとしては、
・sshd_configを編集後にsshdの再起動を行っているか
・事前にサーバ内で、アクセスの確認をしてみたか(ssh localhost)
といったところでしょうか。前者を行っているのであれば、
sshd_configを再確認。両者とも実施済みであればufw、
ufwを無向にしても状況変わらずであれば、ルータ側チェック
といった感じで段階的に進めていけば良いかと思います。
ufwについては、ぱっと見た限りは問題は無いかと思いますが
ルータ側でパケットフィルタリングをしているのであれば、そこまでガチガチにしておく
必要もないかもしれません(この辺は個人感もあるので。。。)
あと、well known portに関しては、ポートフォワーディングで他サーバとバッティングしている
といった理由で無い限りは、22番で待ち受けておいたほうが良いかもしれませんね。。。
#どこで待ち受けていたとしても、アタックを受けるときは受けますので。。
オフライン
zunchax による投稿:
Connection timed out的な感じでアクセスできません。
sshd_config に
UseDNS no
を追加設定してみるのはどうでしょうか。
これはDNSでリモートホスト名を確認しようとする動作を止めるものです。
オフライン
アドバイスありがとうございますっ。
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 ******* ********* #===========================================
オフライン
う~~ん、、、駄目でした。状況は全く変わっていない感じです。
何か原因を調査する方法とかあればいいんだけど。
今日の深夜にでも、別の家でもアクセスできないか試してみようと思います。
何か思いつくことや、気になる点があればお願い致します。
オフライン
外部から 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 サーバーのバージョンによって文字列は若干異なります)
このような文字列が表示されないなら、念のためにルーターの設定をもう一度確認してください
オフライン
アドバイスありがとうございます!
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には、ログインを弾いた、みたいなログは残ってなかったような気がします。
オフライン
zunchaxさん による投稿:
ところで、アクセスがサーバーまで到達していないと判断するための材料は何かありませんか?
御自身のサーバなので mmap 等でポートスキャンしてみるとか。
# typo
- mmap
+nmap
#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
それよりももっと確実なのは、ルーターのログを確認することですが、ルーターの機種によってはそれも難しいかもしれません
オフライン
流れ的にはルータが一番臭そうですが、とりあえずそこは他のポートでは
問題なさそうなので、外して考えます。
サーバ起因で考えると、hosts.allowやhosts.denyも考えられますが、
このあたり、何かかいていたりしますでしょうか?
オフライン
#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」のような行が記録されます
オフライン
お返事遅れてしまい、申し訳ないです。
別宅での外部接続を試すのが相手方の都合で、本日の夜になりました。
鍵も手渡しで渡したので、その際にがっつり検証してみたいと思っています。
[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が閉じられちゃってるからなんだろうか・・・。
分からなくなってきました。
オフライン
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はアクセスできなくなりますよね。
以上、取り急ぎご連絡いたします。
オフライン
#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 への通信を許可して) やるのが、もっとも確実だと思います
オフライン