通过两个 ssh 跳转隧道 VNC

Tunelling VNC through two ssh hops

我一直在寻找一种解决方案,通过隧道连接到防火墙后面的机器,让 VNC(或其他端口)通过。就像这个 old usenet post 中解释的那样,我将在这里回顾一下:

我必须通过中间机器登录,例如:

local $ ssh interim
interim $ ssh remote
remote $ ...any commands...

这很好用。但是现在我正在尝试将 vnc 会话从远程隧道传输到本地,但我无法使用一个或两个步骤找到神奇的咒语。

我最近发现了一个非常简单且适应性强的解决方案:只需通过与防火墙的连接将 ssh 隧道连接到目标系统。像这样:

local $ ssh -L 2222:remote:22 interim
interim $ ...no need to do anything here...

在另一个本地控制台中,您连接到端口 2222 上的本地主机,这实际上是您的远程目标:

local $ ssh -C -p 2222 -L 5900:localhost:5900 localhost
remote $ ...possibly start you VNC server here...

在另一个本地控制台中:

local $ xtightvncviewer :0

就这么简单。您可以在第二个命令 (-L localport:localhost:remoteport) 中添加您想要的任何端口转发,就像没有任何中间防火墙一样。例如对于 RDP:-L 3389:localhost:3389