SSHポート転送をデバッグする方法

SSHポート転送をデバッグする方法

これは拡張ですどこでも自宅のコンピュータにアクセスできるSSHポート転送

そこに記載されていることを試しましたが、sshコンピュータが機能しません。

Netgearルーターポート転送設定:

Start Port: 22
End Port: 22
Server IP Address: IP address of by FreeBSD box

/etc/ssh/sshd_conf私のFreeBSDボックス:

PasswordAuthentication yes
AllowUsers root
X11Forwarding yes
AllowTcpForwarding yes

接続を試みる方法:

登録dyndns.comし、外部IPアドレスにマップされたURLを受け取りました。

私のホームネットワークの他のコンピュータで、次の操作を行います。 ssh -l root my_dyndns_ip タイムアウトします。

一方、私はmy_dyndns_urlうまくpingすることができます。

デバッグ:

sshどこからでもアクセスできるようにこの問題を解決するにはどうすればよいですかmy_dnydns_url

Netgearルータのログを見てみましたが、SSH試行に失敗した後にルータにログイン情報が生成されませんでした。

私も見ましたが、/var/log/messages何も見つかりません。

編集:0 @jasonwryanが提案したように、verboseモードでsshを実行します。

奇妙なことを見つけました。 sshを介してdyndns.comから提供されたURLにアクセスしたとき、Whatismyip.comから取得したIPアドレスとは異なるIPアドレスに接続しようとしました。これは間違っていませんか?

編集:1 これでdyndnsの問題が修正されました。

sshを試してみると、エラーが発生してタイムアウトします。接続がタイムアウトしました

編集:2 iptablesやNATはこれに関連していますか?

編集:3 私はデバッグメッセージをキャプチャするsshことから始めました。-d option

WLAN の他のコンピュータで freebsd ボックスに SSH 経由で接続すると、正常に動作し、ログを表示できます。

ただし、外部IP(私のfreebsdボックスに渡されると予想される)でsshを試しても、ログも表示されません。つまり、リクエストが freebsd ボックスに到達しないことを意味します。そしてタイムアウトしました。

答え1

あなたの問題はポート転送にあるのではなく、ルータのNAT設定の他のオプションにあるようです。

まず、LAN IPを使用している場合は、ネットワーク上の他のコンピュータでSSHを正常に実行できることを確認してください。これにより、SSHが正しく機能していることを確認できます。

2. 別のコンピュータでテスト外部ネットワークパブリックIPを使用してください。これにより、ポート転送が正しく機能していることを確認できます。

第三に、同じマシンでテスト外部ネットワークそしてDynDNS URLを使用してください。これにより、DynDNSが正しく機能します。

これらすべてが成功した場合、設定に問題はありません(正しいと仮定)。問題は、単に(直接またはDynDNSを介して)パブリックIPにアクセスすることです。ネットワーク内部。これは、ルータに次のものがあることを意味します。NAT反射可能であれば、内部要求をパブリックIPの外部要求にルーティングするように設定します。

答え2

SSHDサーバーがポート22でリッスンしている場合は、以下を追加してみてください。

Port 22

あなたの構成に。

それでも機能しない場合は、1024より高いポートを転送してみてください(一部のISPは1024より低いポートで非商用加入者トラフィックを許可しません)。また、これを行うには、同じ値を反映するように言ったconfの行を変更する必要があります。

答え3

SSHポートを443に変更してみてください。このポートに接続できる場合は、クライアントとホームPCの間にプロキシがあります。

ファイアウォールで破棄および転送されたすべてのパケットを記録して、誤った転送ルールを見つけることができます。

nmap(またはその他のツール)(ポート< 1024)を使用して外部IPをスキャンしてみてください。ファイアウォールのロギングには切断された接続が表示され、クライアント側では開いているポートが表示されます。

クライアントから家庭用PCまでTraceroute - その間に予期しないホストがあり、ポートを正しく転送していますか?

答え4

tcptracerouteを使用して、リモートポートに最初にアクセスできるかどうかをデバッグしてみてください。一部のシステムでポートがブロックされている場合は、出力でこれを確認できます。両方のシステムで開いているポート/接続を確認するには、netstat -atunを試してください。

関連情報