我想桥接 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
。这是两个隧道链的示例。