web-dev-qa-db-ja.com

ssh -Rすべてのインターフェースでターゲットホストに接続を受け入れさせる

リモートでNATの背後にあるSOURCEホストがあります。ホームネットワークにあるTARGETホストからssh経由でSOURCEに接続したい。したがって、SOURCEで次のコマンドを発行します。

ssh -R 2222:localhost:22 TARGET -N

これで、TARGETからssh -p 2222 localhostを介してSOURCEに接続できます。良い

TARGETの同じネットワークでTABLETを使用すると、これが機能することが期待されます。

ssh -p 2222 TARGET

代わりに、TARGETはlocalhostからのポート2222の接続のみを受け入れるように見えます。以下はTARGETに関するものです。

user@TARGET:~/$ netstat -l | grep 2222
tcp        0      0 localhost:2222          *:*                     LISTEN     
tcp6       0      0 localhost:2222          [::]:*                  LISTEN 

ssh -Rのリモート側にすべてのインターフェースからの接続を許可させる方法はありますか?

8
Jack

デフォルトでは、ローカルホスト(ループバックインターフェイス)でのみリッスンします。コマンドでbind_addressを0.0.0.0として指定する必要があります。

ssh -R 0.0.0.0:2222:localhost:22 TARGET -N

クライアントがbind_addressを指定できるように、ターゲットホストでSSHデーモンを構成する必要もあります。デフォルトでは、すべてのインターフェースをリッスンすることは禁止されています。したがって、bind_addressとして0.0.0.0を指定した場合でも、ループバックでリッスンしていることが常にわかります。

クライアントがバインドアドレスを指定できるようにするには、/etc/ssh/sshd_configに次のような行を含める必要があります。

GatewayPorts clientspecified

完了したら、ターゲットマシンでnetstat -lntpを使用して確認できます。

7
Khaled