ローカルホストのポートを一部のリモートホストに転送:ポート

ローカルホストのポートを一部のリモートホストに転送:ポート

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に転送されます。4444remotehost.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

お役に立てば幸いです。

関連情報