2台のコンピュータ間にSSHトンネルを作成するには?

2台のコンピュータ間にSSHトンネルを作成するには?

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'

プロキシ コマンドは、sshB に移動してncA の SSH 接続で C のポート 9103 に接続するトンネルを実行することを意味します。

これが頻繁に行われる作業である場合は、ホストAに配置して~/.ssh/config次のことを行う必要があります。

host C
    ProxyCommand ssh -q B nc C 9103

これでコマンドラインは簡単です。

$ ssh C

関連情報