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

raz*_*hka 12 windows remote-server x11-forwarding visual-studio-code vscode-extensions

我使用 Windows VS 代码和此扩展“远程 SSH”、“远程 X11”、“远程 X11 (SSH)”来连接远程服务器并从远程服务器获取图形。

我运行 VcXsrv、Pageant。如果我直接连接 Pageant,X11 转发就可以工作。如果我在远程服务器中设置“export DISPLAY=localhost:10.0”,它甚至可以在 VS code 终端中工作。因此,除了 Remote X11 之外,所有功能都有效,它无法设置 DISPLAY 变量,并显示以下日志: Failed to get DISPLAY: Error: Invalid cygwin unix socket path

小智 11

我在这里找到了解决方案https://github.com/microsoft/vscode-remote-release/issues/4600。我在这里总结一下步骤,因为那里的步骤不是很清楚。在开始之前,请确保您拥有最新版本的 VScode 之一(我使用的是 1.55.2)。

从 Windows 连接到 Linux 的步骤:

  1. 安装 Xming(也应该与 VcXsrv 一起使用)。启动Xming(默认显示:0.0)
  2. 安装远程 SSH。您不需要其他扩展。您也不需要具有活动 x11 连接的运行终端。
  3. 向 Windows 添加一个新的环境变量:DISPLAY = localhost:0.0(根据您的 Xming 设置进行调整。我更喜欢默认值)。
  4. 使用 VScode 远程连接。确保 ssh 配置转发 x11 连接: ForwardAgent yes ForwardX11 yes ForwardX11Trusted yes 如果 x11 转发成功并且设置了端口,您实际上可以检查远程主机的日志。如果设置不正确,它会抱怨显示未设置。一个更简单的检查是查看 Linux 服务器中是否自动设置了 DISPLAY 变量。

希望这些步骤之后一切正常。

  • 我发现这应该适用于 Windows。有关 3 的更多信息会更好。如何在 Windows 中设置显示以便 SSH 使用它? (2认同)
  • 这里有一个如何操作的教程:https://zhuanlan.zhihu.com/p/461378596 (2认同)

Jul*_*lli 5

转载自zhuanlan.zhihu.com见上面评论。基本上,我们需要知道的是,在服务器端(大多数是Linux操作系统),它们使用X11协议来显示GUI。

恕我直言,X11 协议由两部分组成:XServer 和 XClient。XServer实际在显示设备上绘制像素,而XClient则负责处理显示背后的逻辑。

为了从远程服务器显示 GUI,我们需要使用一种称为 X11 转发的技术,这意味着将远程 XClient 的内容转发到本地计算机上运行的 XServer。

第1步:VS代码配置

步骤1.1:安装VS代码

步骤1.2:安装Remote-SSH插件

在此输入图像描述

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

步骤2.1:修改配置文件

配置文件由 SSH 使用。它位于C:\Users\[user]\.ssh\config,其中[user]应该是您的用户名。

要建立基于密钥的 SSH 连接,您应该指定密钥文件的路径。此外,要启用 X11 转发,应将以下两行添加到配置文件中:

ForwardX11 yes
ForwardX11Trusted yes
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 配置文件示例

步骤2.2:下载并安装VcXsrv

从这里下载 VcXsrv:VcXsrv Windows X Server 下载 | SourceForge.net

安装后,以下软件应出现在您的菜单中。这正是我们需要的XServer。

在此输入图像描述

第3步:服务器机器配置(Ubuntu)

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

步骤3.1:获取$DISPLAY

通常,该$DISPLAY变量是默认设置的。因此,在服务器的终端中键入以下命令,它将以“IP:D.S.记住D的值”的形式输出一些内容,如下所示10

> echo $DISPLAY
localhost:10.0
Run Code Online (Sandbox Code Playgroud)

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

export DISPLAY=localhost:10.0 
Run Code Online (Sandbox Code Playgroud)

第 4 步:工作流程/管道

步骤4.1:运行VcXsrv

Display number应该是你从步骤3.1得到的值,这里我将其设置为10在此输入图像描述

打钩Disable access control

在此输入图像描述

'X'成功运行软件后,任务栏上应该有一个图标。

在此输入图像描述

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

检查 的值$DISPLAY,应该与您之前设置的一致。

然后输入命令:

xeyes
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

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

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

在此输入图像描述