我正在尝试连接到运行 TigerVNC 服务器的远程 ubuntu 服务器。我可以通过 PuTTy 顺利登录到机器,并且 CLI 运行良好。但是,我确实运行了一些需要 GUI 的应用程序,因此我尝试让远程 GUI 在我的本地计算机上可见。Linux 用户可以运行以下脚本以通过 SSH 将 VNC 隧道传输到他们的本地机器,并且一切正常:
#/bin/bash
# X == the X11 display number for VNC server
ssh -f -L 5901:localhost:590X [email protected] sleep 1
vncviewer Quality=Medium FullScreen=1 UserName=FOO_BAR localhost:1
但是,我没有本地 Linux 机器,而是 Windows 10 机器。不幸的是,TigerVNC Windows 查看器无人维护,无法在我的计算机上使用。因此,我认为我可以使用 WSL(我的 Windows 是最新的,所以我假设这意味着 WSL2,但我 3 年前确实首次安装了 WSL)在我的 Windows 上模拟 Linux 机器,但一切进展不顺利。如果有人能帮助我弄清楚如何实现这一点,我将不胜感激。
我尝试过 (1) 在我的计算机上安装 VcXsrv。我认为这需要我添加
DISPLAY=:0.0
export DISPLAY
到我的~/.bashrc in WSL
。然后我 (2) 在全屏模式下运行 VcXsrv,它不会启动客户端,然后 (3) 在 WSL 中运行上述脚本,但在我的 VcXsrv 窗口中,出现一个弹出窗口,提示“此连接不安全”并要求输入密码。这应该是哪个密码?无论如何,我为此设置的所有密码都是相同的(我知道有安全风险),所以我能够跳过这一步,然后到达 (4) 看起来像 GUI Linux 登录页面。虽然我可以点击,但我实际上无法输入任何内容(即:登录页面的密码),所以我无法确认这是什么机器或发生了什么。其他人也遇到过这种情况吗,还是我在这里做错了什么?
或者,如果有人有此 VcXsrv 设置的替代方案,我愿意倾听。这不是我以前使用过的最稳定的设置(RealVNC 以前运行良好,但我们不再为它付费)。感谢您的帮助。
答案1
我通过对上述方法进行 2 处小修改解决了这个问题。在 (1) 中,我实际上必须DISPLAY=localhost:0.0
按照以下方式设置此 stackexchange 链接。我还必须在全屏模式下加载 VcXsrv,在该模式下我选择“启动程序”而不是不启动任何客户端。我一直选择“启动本地 xclock”只是为了调试它,但是当我运行 ssh bash 脚本时,它无论如何都会用 VNC 覆盖 xclock,所以我认为我的程序选择并不重要。
我相信请求的登录页面的密码是 TigerVNC 密码,但我仍然没有任何确凿的证据。
我现在可以在 WSL 中加载的 X 窗口中成功输入内容,并且 GUI 应用程序似乎正在运行。这是迄今为止我用过的最不严谨的设置,但至少它可以工作,而且全部使用 FOSS,因此在未来几年内应该值得信赖。希望这能帮助其他与我一样挣扎的人!我不会接受这个答案,因为我觉得一定有更好的方法来做到这一点。所以如果你有其他解决方案,我仍然很感兴趣。