両方のコンピュータでlocalhostとlocalhost間のポート転送を実行するには?

両方のコンピュータでlocalhostとlocalhost間のポート転送を実行するには?

ローカルマシンAがあり、ファイアウォールの背後にあるマシンCにアクセスしたいと思います。私はCと同じネットワーク上のコンピュータBにアクセスでき、コンピュータBをSSHサーバーとして使用してAとCの間をトンネリングしようとしています。

AとCの間に2つのリンクを作成したいとしましょう。これはポート転送を通じて達成できます。

ssh -L IP_of_A:5000:IP_of_C:5000 -R IP_of_C:5001:IP_of_A:5001 IP_of_B

127.0.0.1ただし、上記のコマンドで実際のIPアドレスを使用している間はプログラムが中断されるため、上記のコマンドで実際のIPアドレスを使用する代わりに実際のIPアドレスを使用することをお勧めします。だから私はそれが次のようになりたい

ssh -L IP_of_A:5000:127.0.0.1:5000 -R IP_of_C:5001:127.0.0.1:5001 IP_of_B

しかし、これを使用すると、トンネルポートは、マシンAとマシンCの間ではなく、マシンAとマシンBの間にあるようです。

それでは、AとCの間にトンネルを確立し、127.0.0.1SSHアドレスを使い続ける方法は何ですか?

私はsshに初めて触れたので、質問が明確でない場合はいつでも指摘してください。

ベストアンサー1

で指定されたアドレスは、-Lリモートホスト(B)で使用されます。したがって、実際にAと-L 5000:127.0.0.1:5000Bの間にトンネルがあることは驚くべきことではありません。 AのTCPポート5000に接続すると、接続は127.0.0.1:5000Bに転送されます。

一方、-R 5001:127.0.0.1:5001アドレスは localhost(A) によって確認され、宛先は A なので大丈夫です。 BのTCPポート5001に接続すると、接続は127.0.0.1:5001Aに転送されます。

デフォルトでは、-L/-R受信ポートはすべてバインドされているため、localhostそれぞれAとBでのみ使用できます。他のホストへの接続を許可するには、/bind_addressセクションを追加してください。リードを追加するだけで十分です。-L-R:

ssh -L :5000:IP_of_C:5000 -R :5001:127.0.0.1:5001 IP_of_B

この設定では、Aはに接続され、127.0.0.1:5000Cはに接続されますIP_of_B:5001

AとCを使用するには、127.0.0.1AとCの間に(仮想)直接SSH接続を確立する必要があります。これはSSH over SSHトンネルを介して達成できますProxyCommand。次の内容を入れてください~/.ssh/config

Host C
ProxyCommand ssh -q -W IP_of_C:22 IP_of_B

次に、1ホップを介してAからCに接続しますssh

ssh -L 5000:127.0.0.1:5000 -R 5001:127.0.0.1:5001 C

今回はトンネル接続が両端で使用されるため、bind_addressセクションを追加する必要はありません。127.0.0.1

おすすめ記事