如何 ssh 到防火墙后面的机器?

如何 ssh 到防火墙后面的机器?

可能重复:
SSH 连接到一台计算机,然后通过 SSH 连接到另一台计算机

我有 3 台 Linux 机器 A、B 和 C。

我可以从 A ssh 到 B;从 B ssh 到 C,但不能直接从 A ssh 到 C,因为 C 位于防火墙后面。

有没有办法让我能够直接从 A ssh 到 C?我听说过隧道,但我不知道怎么做。我在 A 中只有 root 权限,但在 B 和 C 中没有。

答案1

您可以像这样从 B 到 C 设置 SSH 隧道:

ssh -L 50022:C:22 user@B

其中BC分别是这些服务器的相应地址。然后,您可以使用隧道端口直接连接到 C:

ssh -p 50022 user@localhost

在这种情况下,user是您想要连接到 C 的用户。连接将通过已建立的 ssh 连接进行隧道传输。B 将连接到 C 并代理流量。

(请注意,端口 50022 的选择是任意的;您可以选择本地机器上未使用的任何端口。)

答案2

您可以创建一条从 A 到 C,途经 B 的隧道。

来自 A:

ssh -fgN -L 2222:C:22 B

上述命令将在后台运行 ssh。它会将您连接到 B,启动一个隧道,监听 A 上的 localhost 端口 2222,并连接到 C 端口 22。

现在在 A 上,你可以使用端口 2222 通过 ssh 连接到 C:

ssh -p 2222 localhost

相关内容