使用 ssh 在远程计算机之间建立临时代理

使用 ssh 在远程计算机之间建立临时代理

我想桥接 2 个 ssh 隧道。

我可以从我的机器 myhost.example.com ssh 到 hosta.example.com 和 hostb.example.com (可能有跳箱防火墙,中间有其他东西,但足以说明这是在 .ssh_config 中定义的)。

hosta 无法直接连接到 hostb,反之亦然。我知道使用“-L”和“-R”我可以通过 ssh 连接创建一条隧道,但隧道的一端始终是我的本地计算机。

如何加入隧道,以便 hosta.example.com 可以通过 myhost.example.com 连接到 hostb.example.com ?

(我尝试谷歌,但我发现的只是一百万个网页告诉我如何设置单个隧道 - 而不是加入 2)。

答案1

如果您从本地计算机成功建立以下连接:

ssh -L 1234:localhost:5678 hostb.example.com

那么任何连接到的本地进程localhost:1234都将到达 hostb 上侦听的任何内容localhost:5678

如果您设法在本地计算机上执行此操作:

ssh -R 9876:localhost:1234 hosta.example.com

那么 hosta 上连接到 hosta 的任何进程localhost:9876都将到达您的本地localhost:1234.

但你的本地localhost:1234正是第一个隧道的本地端(ssh -L …);所以现在从 hosta 到 hosta 的连接localhost:9876最终将到达 hostb 上侦听的任何内容localhost:5678。这是两个隧道链的示例。

相关内容