12月12, 2023

VSCode Remote SSH X11 Forwarding不生效

在VSCode配置的ssh_config文件中,已经加入了ForwardX11 yesForwardX11Trusted yes

例如:

Host b450
    HostName 192.168.3.89
    User root
    Port 22
    ServerAliveInterval 60
    ForwardX11 yes
    ForwardX11Trusted yes

本地也安装了VcXsrv,监听localhost:0.0,但是远程还是会报cannot open display:

发生这个问题的根本原因在于,Windows中没有配置DISPLAY环境变量。下面详细解释一下:

该变量指定了图形应该在哪个设备上显示,由于VSCode用的是Windows中的SSH客户端,它读取的是Windows系统中的环境变量,只有在Windows中设置了DISPLAY,这个SSH才知道通过ssh -X转发的X11应该打到本地的哪个设备上,此时本地的VcXsrv才会接收到信息。而远程机器的DISPLAY是ssh自动设置的,本质上是ssh通过指定远程计算机的X11显示到哪(通常是localhost:10.0),从而使得ssh可以直接从这里读取信息,然后转发到本地计算机设置的DISPLAY上。

因此我们在Windows的PATH中配置DISPLAY=localhost:0.0即可(要与VcXsrv的配置相同)。

此外,也需要检查一下远程计算器/etc/ssh/sshd_config配置了X11Forwarding yes(通常默认是打开的)。

注意:如果仍然不行,请检查修改VSCode配置的ssh_config文件后,远程服务器上的VSCode Remote连接是否重新连过,如果没有,SSH其实一直是没有断开的,新增加的SSH X11配置也就没生效,需要在VSCode中执行Remote SSH的kill命令重启VSCode Remote才行!

最后再提一点,我们通常会在WSL中配置export DISPLAY=localhost:0.0,目的是给WSL配置X11应该显示到哪,这样配合VcXsrv读取这里的信息,即可实现WSL显示X11。

本文链接:https://debug.fanzheng.org/post/VSCode Remote SSH X11 Forwarding-bu-sheng-xiao.html

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。