Remotehost.some.where:4444で実行されているサーバーがあるとします。 localhost:5555に接続する必要があるソフトウェアがあります。次ssh
のように渡すことができます。
ssh -L 5555:remotehost.some.where:4444 myuser@localhost
ただし、これにはlocalhostへの不要なSSH接続が必要であり、追加してもこれを-N
防ぐことはできません。ログインせずに(おそらく他のツールを使用して)このポート転送を実行するにはどうすればよいですか?
ベストアンサー1
最も簡単な解決策は、一種のTCPプロキシを実行することです。たとえば、次のように使用できますsocat
。
socat tcp-listen:5555,bind=127.0.0.1,fork tcp:remotehost.some.where:4444
実行中、localhostのポートへの接続はlocalhostのポート5555
に転送されます。4444
remotehost.some.where
ここで使用するコマンドは受信のみを行います127.0.0.1
。そのポートの他のホストからの接続を実際に受け入れるには、その5555
オプションを削除するだけですbind=127.0.0.1
。