
ローカルマシン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.1
SSHアドレスを使い続ける方法は何ですか?
私はsshに初めて触れたので、質問が明確でない場合はいつでも指摘してください。
答え1
で指定されたアドレスは、-L
リモートホスト(B)で使用されます。したがって、実際にAと-L 5000:127.0.0.1:5000
Bの間にトンネルがあることは驚くべきことではありません。 AのTCPポート5000に接続すると、接続は127.0.0.1:5000
Bに転送されます。
一方、-R 5001:127.0.0.1:5001
アドレスは localhost(A) によって確認され、宛先は A なので大丈夫です。 BのTCPポート5001に接続すると、接続は127.0.0.1:5001
Aに転送されます。
デフォルトでは、-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:5000
Cはに接続されますIP_of_B:5001
。
AとCを使用するには、127.0.0.1
Aと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
答え2
私が理解したのは、StackExchangeのServerFaultサイトであなたが探しているものに答えを得たようです。ここ。
これはネットワーキングおよびネットワーク/サーバー管理ツールに関するものなので、今後このような質問をする方が良いサイトになる可能性があります。
ここでは、ホストAからホストCへのSSHのトンネルの設定について具体的に説明しますが、すべてのTCP接続に対してこれを行うことができます。
この例では、$PROXYHOST
ホストB$REMOTEHOST
はホストC、$SSHPORT
ホストCは接続を送信するポートです。