[英]VS code remote x11 cant get DISPLAY while connecting to remote server
我使用 Windows VS 代码和此扩展“远程 SSH”、“远程 X11”、“远程 X11 (SSH)”来连接并从远程服务器获取图形。
我运行 VcXsrv,选美。 如果我直接与 Pageant 连接,X11 转发工作。 如果我在远程服务器中设置“export DISPLAY=localhost:10.0”,它甚至可以在 VS 代码终端中使用。 所以除了远程 X11 之外的所有工作,它无法设置 DISPLAY 变量,使用此日志:无法获取显示:错误:无效的 cygwin unix 套接字路径
转载自 zhuanlan.zhihu.com 见上文评论。 基本上,我们只需要知道在服务器端(主要是 Linux 操作系统),它们使用 X11 协议来显示 GUI。
恕我直言,X11 协议由两部分组成,XServer 和 XClient。 XServer 是实际在显示设备上绘制像素的那个,而 XClient 负责处理显示背后的逻辑。
要从远程服务器显示 GUI,我们需要使用一种称为 X11 转发的技术,这意味着将远程 XClient 的内容转发到在本地机器上运行的 XServer。
C:\Users\[user]\.ssh\config
,其中[user]
应该是您的用户名。建立基于密钥的SSH连接,需要指定密钥文件的路径。 此外,要启用 X11 转发,需要在配置文件中添加以下两行:
ForwardX11 yes
ForwardX11Trusted yes
步骤 2.2:下载并安装 VcXsrv 从这里下载 VcXsrv:VcXsrv Windows X 服务器下载 | SourceForge.net
安装后,以下软件应出现在您的菜单中。 这正是我们需要的 XServer。
SSH
连接,请记住将您的公钥复制到服务器机器上的authorized_keys
中。 步骤 3.1:获取$DISPLAY
通常, $DISPLAY
变量是默认设置的。 因此,在您的服务器终端中键入以下命令,它将 output 形式为IP:DS
记住D
的值,这里是10
。
> echo $DISPLAY
localhost:10.0
如果 output 为空白,则应自行设置$DISPLAY
值。
export DISPLAY=localhost:10.0
勾选Disable access control
成功运行软件后,任务栏上应该会出现一个'X'
图标。
步骤 4.2:运行 VS Code 并连接到服务器 检查$DISPLAY
的值,它应该与您之前设置的一致。
然后输入命令:
xeyes
如果出现两只眼睛的GUI
,就说明你成功了!
步骤 4.3:测试您自己的GUI
程序(可选)您甚至可以运行您自己编写的GUI
,很酷吧?
我在这里找到了解决方案https://github.com/microsoft/vscode-remote-release/issues/4600 。 我在这里总结了这些步骤,因为那里的步骤不是很清楚。 在开始之前,请确保您拥有最新版本的 VScode 之一(我使用的是 1.55.2)。
从 Windows 连接到 Linux 的步骤:
ForwardAgent yes ForwardX11 yes ForwardX11Trusted yes
如果 x11 转发成功并且端口已设置,您可以实际检查远程主机的日志。 如果设置不正确,它会抱怨显示未设置。 更简单的检查是查看 Linux 服务器中是否自动设置了 DISPLAY 变量。希望在这些步骤之后一切正常。
如果这不起作用,还有另一个技巧:
安装 Xming 并启动一个显示编号为 0 的显示,如图所示。
安装腻子
使用 Putty 连接到远程 Linux 系统并确保 X11 适用于该 Putty session,记得检查 Z765553E6C7AC8592C389ACB9878A050 中的 X11 转发选项,如图所示:
在 putty 中回显 $DISPLAY,应该会看到 output 值,例如 localhost:15.0
在 VSCode 远程 ssh 中,也连接远程 Linux,如果 X11 可以工作,则将其 DISPLAY 变量设置为与 putty 相同: setenv DISPLAY localhost:15.0
事情就像一个魅力
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.