我有 3 台机器..
- A. 我家里的本地机器(MacOSX)。
- B. 我可以通过 SSH 进入的办公机器(中间人)。这是一台运行 Ubuntu 服务器的小型虚拟机,我可以打开新端口
- C. 工作中的另一台机器运行 Ubuntu Desktop,并使用 vine 进行远程桌面访问,我可以通过 B 使用 SSH 访问这台机器。
因此我可以从 A 到 B 通过 SSH 连接,并且从 BI 可以看到 C 中的开放端口。我想使用 VNC 客户端访问 C。
有没有办法建立从 A 到 C 的隧道?
答案1
根据答案https://superuser.com/a/371082/281372,具体需要做的事情如下:
user@machineA $ ssh -fN -L59595:machineC:59595 user@machineB \
-c 'ssh -fN -L59595:machineB:5900 user@machineC' &
user@machineA $ vncviewer localhost:59595
这将打开一个从 A 到 B 的 ssh 会话,并建立从 A:59595 到 B:59595 的隧道;并且在 B 上的 ssh 会话中,它将打开一个从 B 到 C 的新 ssh 会话,并建立从 B:59595 到 C:5900 的隧道。
然后回到 A,您通过 VNC 连接到 localhost:59595。它通过隧道传输到 B:59595,然后 B:59595 捕获它并将其重新通过隧道传输到 C:5900。
我还没有测试过。
(在之前的回答中,我推荐了 socat 和 netcat,但现在很明显您希望整个隧道受到 ssh 保护。)