如何使用 SSVNC 通过 VNC 进入防火墙后面的机器?

如何使用 SSVNC 通过 VNC 进入防火墙后面的机器?

我目前有三台机器(全部运行 Linux):

  • FirewalledMachine - 我想要查看的机器。始终开启。
  • 服务器 - 完全控制端口转发。始终可用。
  • HomeMachine-我想要在其上查看 FirewalledMachine 的机器。

现在,我让 FirewalledMachine 与服务器保持反向 SSH 会话打开。即 FirewalledMachine 不断检查是否存在反向 SSH 会话,如果没有,则打开一个:

ssh -N -f -R 0.0.0.0:2210:localhost:22 user@Server

因此,现在,我可以随时使用以下命令从 HomeMachine 通过 SSH 进入 FirewalledMachine:

ssh -p 2210 user@Server

我如何从 HomeMachine 查看 FirewalledMachine 上的 display:0?看起来我可以使用 ssvnc 来执行此操作,但我不太清楚具体怎么做。

答案1

我将假设以下几件事:

  • 您要连接的 SSH 服务器 (FirewalledMachine) 允许 SSH 隧道。
  • VNC 服务完全正常运行(在 FirewalledMachine 上)。
  • localhost在两台机器上都正确映射。

VNC 端口从 5900 开始,用于显示 0,然后从那里开始增加。因此,在连接期间创建 SSH 隧道,方法是将客户端 SSH 命令从:

$ ssh -p 2210 user@server

到:

$ ssh -L 5900:localhost:5900 -p 2210 user@server

(第一部分5900是客户端看到的隧道。第二部分localhost:5900是相对于服务器端,通过隧道传输的数据所连接的地址和端口。)

现在远程 VNC 端口已映射到匹配的本地端口,因此您可以像这样连接 VNC:

$ vncviewer localhost:0

(VNC 使用 X 显示 ID 而不是端口号。虽然可以将服务器配置为使用不同的起始端口,但显示 0 通常映射到端口 5900。)

如果您的本地 X windows 系统等原因已经占用了该端口,则尝试在本地使用 5900 可能会出现问题。如果是这种情况,您可以通过切换到其他本地端口来获得更好的结果,如下所示:

$ ssh -L 5910:localhost:5900 -p 2210 user@server
$ vncviewer localhost:10

相关内容