適切に設定されているにもかかわらず、SSH 接続が失敗するのはなぜでしょうか?

適切に設定されているにもかかわらず、SSH 接続が失敗するのはなぜでしょうか?

Ubuntu Server 14.04 を使用して、ポート 2222 で ssh サーバーを実行しました (構築時にそのように求められました)。すでにセットアップ全体を確認しましたが、何も問題がないようです。

設定されている内容は次のとおりです。

  • 建物内で、ポート 2222 の TCP 接続が私の IP にリダイレクトされます。
  • アクセスできるポート 80 についても同様です。
  • ポート2222でSSH接続を試みると、次の方法でネットワークの着信アクティビティを確認できます。iftop
  • 私はufw適切なルールに従って実行する:

    2222/TCP ALLOW Anywhere

  • sshd.conf入手したファイル:

  • ポート 2222 でリッスンしている SSH サーバーを取得しました。

  • SSH サーバーをログ記録モードに設定しましたが、接続しようとしてAUTHも何も表示されません。/var/log/auth.log
  • これは私のsshd.confファイルです
  • はい、ssh デーモンは実行されており、再起動されました。

そのため、接続しようとするたびに次のようなメッセージが表示されます。

ssh: connect to host <publicbuildingip> port 2222: Connection refused

クライアントを詳細モードで実行すると、次の出力が表示されます。

debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to <publicip> [<publicip>] port 2222.
debug1: connect to address <publicip> port 2222: Connection refused
ssh: connect to host <publicip> port 2222: Connection refused

同じネットワーク上のホストからログインしようとすると、同じことが起こります。

ランニングnetstatサーバーのsudo netstat -tulpn | grep ssh出力は次のようになります:

tcp    0    0 127.0.0.1:2222    0.0.0.0:*    LISTEN    969/sshd

ランニングnmapネットワーク外部からのパブリック IP に対しては、次の出力が行われます。

Host is up (0.051s latency).
Not shown: 996 filtered ports
PORT     STATE  SERVICE
21/tcp   closed ftp
80/tcp   open   http
2222/tcp closed unknown
8080/tcp closed http-proxy

Nmap done: 1 IP address (1 host up) scanned in 5.31 seconds

telnet <publicip>2222を試す

出力:

telnet: Unable to connect to remote host: Connection refused

建物内のネットワーク IP で試した場合も同様です。

しかし、サーバーで実行された iftop は、ログインしようとしたときに実際にネットワーク アクティビティがあることを示しています。

ランニングtcpdumpサーバーでは次のようにします:tcpdump -vniay port 2222 -i eth0ログイン試行時にこれを出力します:

15:53:36.812402 IP (tos 0x0, ttl 64, id 56954, offset 0, flags [DF], proto TCP (6), length 60)
  192.168.1.86.39822 > 192.168.1.90.2222: Flags [S], cksum 0xa1b8 (correct), seq 3966921350, win 292000, options [mss 1460,sackOK,TS val 308476 ecr 0,nop,wscale 7], lenght 0

何が失敗しているのでしょうか?

答え1

そのnetstat出力とsshd設定ファイル(特にこの行) SSH デーモンはローカルのみの IP アドレス (127.0.0.1) をリッスンしており、実際に LAN と通信したり、ネットワーク上のルーター/ゲートウェイ デバイス経由で送信したりする IP ではありません。

sshd_configに、サーバーに割り当てられたプライベート LAN IP アドレスなど、LAN 上の行が設定されていることを確認しますListenAddress。ない場合は、 または などの構文を使用して、ポート ディレクティブの後に追加しListenAddress 0.0.0.0ListenAddress ::これらの項目を実際の IPv4 または IPv6 アドレスに置き換えます。

また、127.0.0.0/8 内の任意の IP アドレスへのバインドは、ローカル コンピューター自体にのみ適用され、LAN、ローカル ネットワーク、またはその他の場所に実際にルーティングできるアドレスには適用されないことに注意してください。

関連情報