リモートで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
のリモート側にすべてのインターフェースからの接続を許可させる方法はありますか?
デフォルトでは、ローカルホスト(ループバックインターフェイス)でのみリッスンします。コマンドで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
を使用して確認できます。