VNC 通过服务器连接到防火墙后面的 PC,而不在同一个 LAN 中

VNC 通过服务器连接到防火墙后面的 PC,而不在同一个 LAN 中

我的家庭网络中有一台 PC,我需要能够通过 VNC(或其他等效协议,其实无所谓)在全球范围内远程访问它。出于安全原因,它不允许任何直接传入连接,也没有静态 IP。我还有一台可以通过 SSH 访问的服务器,它有静态 IP,没有防火墙。它与家庭 PC 不在同一个 LAN 中。

现在,有没有办法将我的家用电脑连接到中间服务器,以便我可以通过使用第三台设备登录该服务器来控制它?

到目前为止,我找到的所有 VNC 隧道解决方案似乎只有在服务器和隧道共享同一个 LAN 时才有效,这样就可以从中间服务器建立到 VNC 设备的直接连接。这不是我想要的 - 我想在 VNC 服务器和中间服务器之间建立永久(或自动重新连接)的连接。

所有设备都运行 Linux。

答案1

好吧,我想我自己找到了一个解决方案(尽管有点原始)。我写了一个简单的脚本,让我想要访问的机器执行

x11vnc -connect_or_exit <intermediary server IP>

每 30 秒一次。只要服务器上没有运行 VNC 查看器,这当然会失败。所以它会失败,机器会重试。

当我想要实际访问该机器时,我会通过启用 X11 转发的 SSH 连接到中间服务器。现在,我在该中间服务器上启动启用了反向连接的 vinagre。之后,运行 x11vnc 的机器可以实际连接到服务器,并建立反向 VNC 连接,结果窗口通过 X11 转发显示给我。

这当然不是最优雅的解决方案。这意味着来自受控机器的图像通过 vnc 压缩以到达中间服务器,然后解压缩,然后再次压缩以进行 X11 转发。从性能方面来看,这不是一个很好的解决方案,尽管简单桌面应用程序的反应速度对我来说仍然可用。如果您知道更好的替代方案,请随时回答!

相关内容