A、B、C 3台のコンピュータがあるとしましょう。
コンピュータAはポート9103を介してコンピュータCに接続する必要があります。
ただし、Cには到達できません。ただし、コンピュータBに到達でき、コンピュータBがコンピュータCに到達する可能性があります。
SSHトンネルを介してこれを行うことができることを知っています。しかし、問題を複雑にするのは、ファイアウォールのため、コンピュータAはコンピュータBにSSHを介して接続できませんが、BはコンピュータAにSSHを介して接続できることです.したがって、AがBに到達できるように、逆方向SSHトンネルをBで作成できます。
コンピュータAがコンピュータBを介してコンピュータCに接続できるように、コンピュータBにトンネルを作成する方法はありますか?
答え1
BのA:59103から始まるリバーストンネルを作成します。 Bに関連するエンドポイントはC:9103です。
ssh -R 59103:C:9103 A
Aのポート番号を59103から適切なポート番号に変更します。
解決策は、Bが表面的にCに到達できるというあなたの声明を受け入れます。 BからCへの接続は保護されていませんssh
。
答え2
もっとカラフルにしたい場合は、次のように(ホストAで)要求に応じてnc
トンネルを設定できます(Bにインストールされている場合)。nc
$ ssh C -oProxyCommand='ssh -q B nc C 9103'
プロキシ コマンドは、ssh
B に移動してnc
A の SSH 接続で C のポート 9103 に接続するトンネルを実行することを意味します。
これが頻繁に行われる作業である場合は、ホストAに配置して~/.ssh/config
次のことを行う必要があります。
host C
ProxyCommand ssh -q B nc C 9103
これでコマンドラインは簡単です。
$ ssh C