windows VS代码远程x11在连接到远程服务器时无法获取DISPLAY

5vf7fwbs  于 2022-11-18  发布在  Windows
关注(0)|答案(3)|浏览(618)

我使用Windows VS代码和这个扩展“远程SSH”,“远程X11”,“远程X11(SSH)”来连接和从远程服务器获得图形。
我运行VcXsrv,Pageant。如果我直接连接Pageant,X11转发工作正常。如果我在远程服务器设置“export DISPLAY=localhost:10.0”,它甚至可以在VS代码终端工作。因此,除了远程X11外,其他都可以工作,它不能设置DISPLAY变量,使用此日志:无法获取DISPLAY:错误:无效的cygwin unix套接字路径

au9on6nz

au9on6nz1#

我在这里找到了这个问题的解决方案https://github.com/microsoft/vscode-remote-release/issues/4600。我在这里总结了步骤,因为那里的步骤不是很清楚。在开始之前,确保你有一个最新版本的VScode(我使用的是1. 55. 2)。
从Windows连接到Linux的步骤:
1.安装Xming(应该也可以与VcXsrv一起使用)。启动Xming(默认显示:0.0)
1.安装Remote-SSH。你不需要其他的扩展。你也不需要一个有x11连接的运行终端。
1.将新环境变量添加到Windows:DISPLAY = localhost:0.0(根据您的Xming设置调整这个值。我更喜欢默认值)。
1.使用VScode远程连接。确保ssh配置转发x11连接:ForwardAgent yes ForwardX11 yes ForwardX11Trusted yes如果x11转发成功并且端口设置正确,您可以检查远程主机的日志。如果设置不正确,它会抱怨显示没有设置。更简单的检查是查看DISPLAY变量是否在Linux服务器中自动设置。
希望在这些步骤之后一切都能正常工作。

jdgnovmf

jdgnovmf2#

如果这一招行不通,还有另一招:
1.安装Xming并启动显示器,显示器编号为0,如上图所示。
1.安装腻子
1.使用Putty连接到远程Linux系统,并确保X11可用于该Putty会话,请记住检查SSH选项中的X11转发,如下所示:

1.在putty中回显$DISPLAY,并应看到输出值如localhost:15.0
1.在VSCode远程ssh中,也连接到远程Linux,如果X11确实工作,则将其DISPLAY变量设置为与putty相同:setenv显示本地主机:15.0
"事情就像魔咒一样“

yzxexxkh

yzxexxkh3#

转载自zhuanlan.zhihu.com见上面的评论。基本上,我们需要知道的是,在服务器端(大多是Linux操作系统),他们使用X11协议来显示GUI。
恕我直言,X11协议由XServer和XClient两部分组成,XServer负责在显示设备上绘制像素,而XClient负责处理显示背后的逻辑。
为了从远程服务器显示GUI,我们需要使用一种称为X11转发的技术,这意味着将远程XClient的内容转发到运行在本地机器上的XServer。

步骤1:VS代码配置

步骤1.1:安装VS代码

步骤1.2:安装远程SSH插件

步骤2:客户端计算机配置(Windows)

步骤2.1:修改配置文件

配置文件由SSH使用。它位于C:\Users\[user]\.ssh\config,其中[user]应该是您的用户名。
要建立基于密钥的SSH连接,您需要指定密钥文件的路径。此外,要启用X11转发,需要在配置文件中添加以下两行:

ForwardX11 yes
ForwardX11Trusted yes


配置文件示例

步骤2.2:下载并安装VcXsrv

从此处下载VcXsrv:Windows X Server 2016简体中文版|SourceForge.net
安装后,下面的软件应该出现在你的菜单中。这正是我们需要的XServer。

步骤3:服务器计算机配置(Ubuntu)

如果配置基于密钥的SSH连接,请记住将公钥复制到服务器计算机上的authorized_keys中。

步骤3.1:获取$DISPLAY

通常情况下,$DISPLAY变量是默认设置的。因此,在服务器的终端中输入以下命令,它将以IP:D.S.的形式输出内容。记住D的值,在这里是10

> echo $DISPLAY
localhost:10.0

如果输出为空,则应自行设置$DISPLAY值。

export DISPLAY=localhost:10.0

步骤4:工作流/管道

步骤4.1:运行VcXsrv

Display number应该是从步骤3.1中得到的值,这里我将其设置为10

刻度Disable access control
x1c4d 1x指令集
当您成功运行软件时,任务栏上应该有一个'X'图标。

步骤4.2:运行VS代码并连接到服务器

检查$DISPLAY的值,它应与您之前设置的一致。
然后键入命令:

xeyes

如果两只眼睛的GUI出现了,就意味着你成功了!


指令集

步骤4.3:测试您自己的GUI程序(可选)

你甚至可以运行你自己写的GUI,很酷吧?

相关问题