如何在 Linux 中将多个 SSH 隧道连接在一起

如何在 Linux 中将多个 SSH 隧道连接在一起

我有以下情况:

A -----|------ B -----|------ 工作

工作地点可以通过 SSH 进入 B,A 也可以通过 SSH 进入 B,但除此之外,一切都有防火墙保护。我想做的是在工作地点和 A 之间创建一个 SSH 隧道,这样我就可以从 A 通过 VNC 进入工作地点。

我在工作中创建了一个远程 SSH 隧道:

ssh -R 5900:localhost:5900 B

这意味着我可以通过 VNC 从 B 进入工作。但我需要做什么才能将其扩展到 A。我曾尝试创建从 A 到 B 的本地 SSH 隧道,如下所示:

ssh -L 5901:localhost:5900 B

但它给出的是bind: Cannot assign requested address,因为 5900 已经被分配。

有人知道如何做到这一点吗?

答案1

只是为了回答我自己的问题,出于某种原因,你必须强制使用 ipv4 即从 A

ssh -4 -L 5901:localhost:5900 B

这样可行。

答案2

我不确定我的答案是否完美,但我会尝试一下。

您尝试的设置显然不会起作用,因为您正在从 B 上的端口 5900 转发以工作,同时还将端口 5900 从 A 转发到 B。

但是您不能将同一个端口用于两个不同的连接,这就是为什么您会收到错误“绑定:无法分配请求的地址,因为 5900 已经被分配”。

你可以做的是在 B 上设置一个转发器。

然后尝试从 A 使用此命令:# ssh -L 5901:localhost:5901 B

然后在 B 上将流量从端口 5901 转发到 5900,反之亦然。

我没有设置和时间来测试它,但我很好奇它是否会起作用。

因此,请在测试完成后返回结果。

相关内容