我目前有三台机器(全部运行 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