OpenSSH を使用して、ローカル マシンに SSH サーバーを設定しようとしています。リモート ホストからローカル SSH サーバーに SSH 接続しようとすると、SSH サーバーが応答せず、要求がタイムアウトになります。この問題には、私が単に見落としているだけの、非常に明白な修正方法があるはずです。
リモート ホストから SSH 接続しようとすると、次のようになります。
yoshimi@robots:/$ ssh -vv [email protected]
OpenSSH_6.7p1 Debian-5, OpenSSL 1.0.1k 8 Jan 2015
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 99.3.26.94 [99.3.26.94] port 22.
debug2: fd 3 setting O_NONBLOCK
debug1: connect to address 99.3.26.94 port 22: Connection timed out
ssh: connect to host 99.3.26.94 port 22: Connection timed out
robots
リモート ホストはどこにあり、99.3.26.94
ローカル SSH サーバーはどこにありますか。
SSHが実行中
volt@arnold:~$ ps -A | grep sshd
5784 ? 00:00:00 sshd
arnold
ローカル SSH サーバーはどこにありますか。
ルーターにポート転送が設定されている
自宅のルーターを、ポート 80 と 22 を SSH サーバーに転送するように設定しました。興味深いことに、ポート 80 は問題なく動作し、Apache Web ディレクトリに直接接続されます。ポート 22 はそうではありません。
NMapはフィルタリングされていると言っている
yoshimi@robots:/$ nmap -p 22 99.3.26.94
Starting Nmap 6.47 ( http://nmap.org ) at 2015-06-02 14:45 EDT
Nmap scan report for 99-3-26-94.lightspeed.bcvloh.sbcglobal.net (99.3.26.94)
Host is up (0.33s latency).
PORT STATE SERVICE
22/tcp filtered ssh
Nmap done: 1 IP address (1 host up) scanned in 7.59 seconds
robots
リモート ホストはどこにあり、99.3.26.94
ローカル SSH サーバーはどこにありますか。
それは IPTables ではない (と思う)
volt@arnold:~$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
fail2ban-ssh tcp -- anywhere anywhere multiport dports ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:http
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain fail2ban-ssh (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
...そして、他のファイアウォールは設置していません。これは比較的新しい Debian netinst です。
それで:他に何があるでしょうか?確かに、トラフィックを無視するのはファイアウォールのようなものだと思われますが、ルーターでも、iptables でも、SSH サーバー上の別のファイアウォールでもない場合は、他に一体何があるのでしょうか?
編集: NetStat サーバーの出力
SSH サーバーから:
tcp6 0 0 :::22 :::* LISTEN 5784/sshd
答え1
非常に残念な自己回答
この問題を 1 日放置して、再び取り組んだところ、不思議なことに、すべてが正常に動作していることがわかり、ほっとすると同時に不安になりました (安心するよりも不安のほうが大きかったです)。
それで、問題は何だったのでしょうか?
ルーター、SSHサーバー、SSHクライアントマシンのいずれの設定も変更または調整されていません。適切な設定にもかかわらず、ルーターが着信トラフィックを適切に処理できなかったと言っても過言ではありません。本当にポート転送に対処するように設計されているため、必要な変更を実装するのにしばらく時間がかかりました。
でももう6時間くらい経ってるよ!!
そうだね、わかってるよ。一日中何がおかしいのか考えていたけど、結局見つからなかったんだ。なかった何も問題はありません。明らかに、ルーターの設定が有効になるまでに 6 時間 (場合によってはそれ以上) かかることがあります。
それで、これが私の問題であるかどうかはどうすればわかるのでしょうか?
この冒険中に私が見つけた気の利いたツールは ですtcpdump
。この小さなツールはトラフィックをスニッフィングし、実際に何が起こっているかについて貴重な洞察を提供します。さらに、このツールには、見たいものを正確に絞り込むことができる優れたフィルタリング機能があります。たとえば、次のコマンドです。
tcpdump -i wlan1 port 22 -n -Q inout
tcpdump
wlan1 インターフェイス ( = 'interface') 経由のトラフィックをポート 22 のみで探すように指示し-i
、DNS 名前解決を無視し ( = 'no name resolution')、着信-n
トラフィックと発信トラフィックの両方を確認します ( 、 、または;がデフォルトです)。-Q
in
out
inout
inout
リモート マシン経由で接続を試みているときに SSH サーバーでこのコマンドを実行すると、問題が正確にどこにあるのかがすぐに明らかになります。基本的に、次の 3 つの可能性があります。
- もしあなたが見ているなら着信リモートマシンからのトラフィックですが、発信なしローカル サーバーからのトラフィックの場合、問題はサーバーにあります。おそらく、ファイアウォール ルールなどを変更する必要があるでしょう。
- もしあなたが見ているなら受信と送信の両方しかし、リモート マシンが応答を受信しない場合、ルーターに問題がある可能性が最も高くなります。ルーターは着信トラフィックを許可していますが、発信パケットをドロップしています。
- もしあれば交通量は全くないこれもおそらくルーターの問題です。リモート マシンの
SYN
パケットは、サーバーに到達する前にルーターによって無視され、ドロップされます。
そして、問題がどこにあるのかがわかれば、修正は(通常は)簡単です。