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
。
答え2
これを行う方法はいくつかあります。
1) GNU/Linuxならiptables
これを行います。
2)本当にSSHを使用したい場合は、RSAキーペアを生成して〜./ssh/authorized_keysファイルにコピーし、コマンドを繰り返してオプションを追加し-N
ます。
3)DebianまたはDebianベースのディストリビューションを使用している場合redir
。
4)以下を使用してこれを行うこともできますsocat
。
socat TCP4-LISTEN:80,fork TCP4:www.yourdomain.org:8080
お役に立てば幸いです。