SSHトンネルABCが与えられた場合、Bを除外する方法は?

SSHトンネルABCが与えられた場合、Bを除外する方法は?

私はしばらく3台のマシン(A、、、B)でSSH設定を使用してきました。私が接続したい2つの異なるLAN上のコンピュータとパブリックアドレスをC持つ私のボックスAです。CB

私はマシンでA次のことを行います。

ssh -p 443 -f -N -R 1987:localhost:22 hostname-of-B

機械にはC以下があります~/.ssh/config

Host hostB
  User user-of-B
  HostName hostname-of-B

Host hostA
  User user-of-A
  ProxyCommand ssh -o 'GatewayPorts yes' -q hostB nc -q0 localhost 1987

だからCから次に接続することができますA

ssh hostA

Bこの設定は、インターネット接続が悪い他のコンピュータに切り替える必要があるまでうまく機能しました。今、接続状態が良いAにもかかわらず、すべてが非常に遅いです。C

CAだから、からの最初の接続を確立した後からからの直接接続を確立することが可能かどうかを知りたいですB。これにより方程式が削除され、接続速度が再び速くなります。ACB

答え1

いいえ、できません。再公開するには一般的なコンテンツが必要です。または、あるサーバーから別のサーバーへの各接続の可視性のため。

答え2

公開SSHアクセスが可能な他のマシンXがある場合は、遅いBを回避できます。これは、自宅のマシンでも、接続が良い非常に安価なリースパブリック仮想マシンでもかまいません。

Cでは、XからCへのリバーストンネルを開くことができます。

ssh -Nf -R 10022:localhost:22  user-of-X@hostname-of-X

次に、AのXを介して別の "hop-config"を追加します。

Host hostAviaX
  User user-of-X
  ProxyCommand ssh -o 'GatewayPorts yes'-q hostB nc -q0 localhost 10022

Aでssh hostAviaX動作する必要があります。

Aあなたのルータを制御するネットワーク上のクライアントコンピュータで、AがパブリックSSHアクセスを持つようにポート転送を有効にできます。この場合、他のXは不要であり、上記の例ではX == Aを置き換えることができます。

関連情報