我有 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
其中B
和C
分别是这些服务器的相应地址。然后,您可以使用隧道端口直接连接到 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