Windows上のOpenSSHは、リモート転送に使用されるソケットを常にLOOPBACKにバインドします。

Windows上のOpenSSHは、リモート転送に使用されるソケットを常にLOOPBACKにバインドします。

タイトル通りです。

ホスト A はサーバー (要塞ホスト、何と呼んでも構いません) として機能します。

ここで、ホスト B は次の操作を実行します。

ssh -R 2222:localhost:22 ユーザー@A

その結果、TCPソケットはAで生成されますが、2222@にバインドされます。ループバックつまり、リモート接続を防止します。

127.0.0.1 を 0.0.0.0 に変更する方法またはその他もっと賢明ですか?

答え1

bind_address仕様のオプション部分が抜けています-Rsshドキュメンテーション(リンク先:マイクロソフト)にはこう書かれている。

デフォルトでは、サーバ上のTCPリスニングソケットはループバックインターフェースのみにバインドされます。これは を指定することによって上書きできますbind_address。空のbind_addressまたはアドレス は*、リモートソケットがすべてのインターフェースでリッスンする必要があることを示します。リモートの指定は、bind_addressサーバのGatewayPortsオプションが有効になっている場合にのみ成功します(sshd_config(5))。

パラメータの 3 タプル バージョンを使用していますが、4 タプル バージョンが必要です。

-R port:host:hostport
-R [bind_address]:port:host:hostport

したがって、リモートサーバーのリスニングポートに誰でも接続できるようにするには、GatewayPortsサーバーのsshd_config そして次のようなコマンドバリエーションを使用します。

ssh -R :2222:localhost:22 user@A

先頭のコロン ( :) は、どこからでも接続を許可する先頭のアスタリスク ワイルドカードも意味します。個人的には、ワイルドカードを使用したこのバージョンの方が、記述内容が意図的であることがより明確になると思います。

ssh -R *:2222:localhost:22 user@A

関連情報