我使用Windows VS代码和这个扩展“远程SSH”,“远程X11”,“远程X11(SSH)”来连接和从远程服务器获得图形。我运行VcXsrv,Pageant。如果我直接连接Pageant,X11转发工作正常。如果我在远程服务器设置“export DISPLAY=localhost:10.0”,它甚至可以在VS代码终端工作。因此,除了远程X11外,其他都可以工作,它不能设置DISPLAY变量,使用此日志:无法获取DISPLAY:错误:无效的cygwin unix套接字路径
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服务器中自动设置。希望在这些步骤之后一切都能正常工作。
ForwardAgent yes ForwardX11 yes ForwardX11Trusted yes
jdgnovmf2#
如果这一招行不通,还有另一招:1.安装Xming并启动显示器,显示器编号为0,如上图所示。1.安装腻子1.使用Putty连接到远程Linux系统,并确保X11可用于该Putty会话,请记住检查SSH选项中的X11转发,如下所示:
1.在putty中回显$DISPLAY,并应看到输出值如localhost:15.01.在VSCode远程ssh中,也连接到远程Linux,如果X11确实工作,则将其DISPLAY变量设置为与putty相同:setenv显示本地主机:15.0"事情就像魔咒一样“
yzxexxkh3#
转载自zhuanlan.zhihu.com见上面的评论。基本上,我们需要知道的是,在服务器端(大多是Linux操作系统),他们使用X11协议来显示GUI。恕我直言,X11协议由XServer和XClient两部分组成,XServer负责在显示设备上绘制像素,而XClient负责处理显示背后的逻辑。为了从远程服务器显示GUI,我们需要使用一种称为X11转发的技术,这意味着将远程XClient的内容转发到运行在本地机器上的XServer。
配置文件由SSH使用。它位于C:\Users\[user]\.ssh\config,其中[user]应该是您的用户名。要建立基于密钥的SSH连接,您需要指定密钥文件的路径。此外,要启用X11转发,需要在配置文件中添加以下两行:
C:\Users\[user]\.ssh\config
[user]
ForwardX11 yes ForwardX11Trusted yes
配置文件示例
从此处下载VcXsrv:Windows X Server 2016简体中文版|SourceForge.net安装后,下面的软件应该出现在你的菜单中。这正是我们需要的XServer。
如果配置基于密钥的SSH连接,请记住将公钥复制到服务器计算机上的authorized_keys中。
SSH
authorized_keys
$DISPLAY
通常情况下,$DISPLAY变量是默认设置的。因此,在服务器的终端中输入以下命令,它将以IP:D.S.的形式输出内容。记住D的值,在这里是10。
IP:D.S.
D
10
> echo $DISPLAY localhost:10.0
如果输出为空,则应自行设置$DISPLAY值。
export DISPLAY=localhost:10.0
VcXsrv
Display number应该是从步骤3.1中得到的值,这里我将其设置为10。
Display number
刻度Disable access controlx1c4d 1x指令集当您成功运行软件时,任务栏上应该有一个'X'图标。
Disable access control
'X'
检查$DISPLAY的值,它应与您之前设置的一致。然后键入命令:
xeyes
如果两只眼睛的GUI出现了,就意味着你成功了!
GUI
指令集
你甚至可以运行你自己写的GUI,很酷吧?
3条答案
按热度按时间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服务器中自动设置。希望在这些步骤之后一切都能正常工作。
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
"事情就像魔咒一样“
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转发,需要在配置文件中添加以下两行:
配置文件示例
步骤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
。如果输出为空,则应自行设置
$DISPLAY
值。步骤4:工作流/管道
步骤4.1:运行
VcXsrv
Display number
应该是从步骤3.1中得到的值,这里我将其设置为10
。刻度
Disable access control
x1c4d 1x指令集
当您成功运行软件时,任务栏上应该有一个
'X'
图标。步骤4.2:运行VS代码并连接到服务器
检查
$DISPLAY
的值,它应与您之前设置的一致。然后键入命令:
如果两只眼睛的
GUI
出现了,就意味着你成功了!指令集
步骤4.3:测试您自己的
GUI
程序(可选)你甚至可以运行你自己写的
GUI
,很酷吧?