介绍:
Remote X11:在Visual Studio Code中远程运行X窗口应用程序
Remote X11扩展旨在帮助用户在远程工作环境中,通过Visual Studio Code启动X窗口应用程序,并在本地机器上显示。为此,用户需要在远程机器上安装该扩展,并确保本地机器上运行X服务器。对于通过SSH连接的用户,还需在本地机器上安装Remote X11 (SSH)扩展(通常会自动安装)。
注意: 使用SSH连接时,可能需要调整一些设置。请查看下面的“认证设置”部分,因为该扩展无法使用VS Code的SSH认证,且不支持所有SSH认证方法。
对于Windows主机,Remote X11扩展仅与VcXsrv进行了测试,但Cygwin/X、Xming和X410等其他服务器也应能正常工作。目前不支持Windows远程机器。
对于SSH连接,如果远程机器未安装Bash,您需要更改remoteX11.SSH.displayCommand设置,并提供一个能够打印DISPLAY变量值的命令。如果使用端口转发,还可能需要更改remoteX11.SSH.port设置。请参阅下面的详细信息。
访问控制
对于容器和WSL 2,您需要与X服务器授权或禁用访问控制。
对于SSH和WSL 1目标,连接到X服务器将来自本地机器,因此无需为这些目标配置任何内容。
X11转发
Remote - SSH扩展目前不支持启用X11转发(查看问题 #267)。为了解决这个问题,Remote X11 (SSH)扩展会在后台创建一个启用转发的SSH连接到远程机器。
该扩展目前仅支持公钥认证。 有关认证设置的更多详细信息,请参阅下文。
扩展设置
设置更改通常会在短暂延迟后自动应用。如果设置更改导致DISPLAY变量更改,您可能需要重新启动任何终端。
您还可以使用F1 > Remote X11: Reconnect Display来强制更新。
Remote X11目前仅支持公钥认证。您必须使用ssh-keygen生成公钥/私钥对,并将您的公钥添加到服务器的~/.ssh/authorized_keys文件中。
RemoteX11可以配置两种获取密钥的方式:
如果remoteX11.SSH.authenticationMethod设置为keyFile,Remote X11将读取remoteX11.SSH.privateKey文件指定的文件作为您的私钥。默认为~/.ssh/id_rsa,因此如果您的文件名不同,必须更改此设置。
此方法不支持带有密码的私钥! 有关支持密码的方法,请参阅下文。
如果remoteX11.SSH.authenticationMethod设置为agent,Remote X11将使用ssh-agent读取通过ssh-add添加的密钥。请参阅VS Code文档以获取启用SSH代理的说明。
要将您的密钥添加到SSH代理中,请在本地机器上打开终端并运行:
ssh-add
如果您的密钥带有密码,您将被提示输入密码。之后,您可以无需重新输入密码即可登录。
在Windows上,您还可以通过将remoteX11.SSH.agent设置更改为pageant来使用Pageant代替内置的OpenSSH代理。
故障排除
在远程工作区中,打开扩展视图(Ctrl X)并检查“Remote X11”是否已在远程机器上安装并启用。如果您使用的是SSH连接,还要检查“Remote X11 (SSH)”是否已在本地机器上安装并启用。
在远程工作区中,打开输出窗格(Ctrl Shift U),并使用右上角的下拉列表检查“Remote X11”的日志。如果一切正常,日志应显示类似于以下内容:
Setting up display for remote "ssh-remote".
Connecting to SSH user@address port 22
DISPLAY = localhost:11.0
如果没有,错误消息可能会帮助您找出问题。一些常见错误的解决方案列在下文。
默认情况下,Remote X11使用SSH_CONNECTION变量来确定到SSH服务器的地址和端口。如果您使用端口转发等功能,这可能会不正确。
检查日志中的“connecting to SSH ...”消息,并检查地址和端口是否正确。如果不正确,请使用remoteX11.SSH.host和/或remoteX11.SSH.port设置进行修复。请注意,这些设置必须在远程机器上设置,因此请打开远程工作区并使用设置的Remote选项卡更改它们。
如果您在Remote X11日志中看到DISPLAY = ...,但运行GUI应用程序时没有任何显示,请确保您的X服务器在本地机器上运行。
还要确保remoteX11.display设置与您的X服务器设置的显示编号匹配。
Windows上的X11服务器通常使用TCP连接,基于Unix的系统上的服务器通常使用Unix套接字。当remoteX11.SSH.X11ConnectionType设置为auto时,它将相应地在TCP和Unix套接字之间进行选择。如果自动选择不正确,您可以手动更改为使用TCP或Unix套接字。
如果您使用SSH且在日志中没有看到DISPLAY = ...,还要检查“Remote X11 (SSH)”的日志是否有错误。日志末尾附近应该有一个打印DISPLAY变量的命令。如果此命令失败,请尝试使用用户(而不是远程)设置中的remoteX11.SSH.displayCommand设置更改它。
默认认证方法不支持带有密码的密钥。您必须使用SSH代理。有关更多详细信息,请参阅上面的认证设置。
检查您的认证设置。这通常意味着您的公钥不在远程服务器的authorized_keys文件中,或者您尚未将私钥添加到SSH代理中。有关更多详细信息,请参阅上面的认证设置。
Windows的SSH代理可能未运行。从开始菜单打开“服务”,并确保OpenSSH Authentigation Agent服务正在运行。
您的X服务器启用了访问控制。请与服务器进行授权或禁用访问控制。有关更多详细信息,请参阅https://en.wikipedia.org/wiki/X_Window_authorization。
如果您在从WSL 2运行应用程序时遇到此错误,连接可能被Windows防火墙阻止。您可以编辑防火墙规则以允许它:
从开始菜单打开Windows Defender防火墙,然后从左侧边栏选择“高级设置”。这应该会打开一个标题为“Windows Defender防火墙高级安全性”的窗口。
在左侧选择“入站规则”。
找到具有以下设置的规则:
右键点击规则并选择“属性”。
在“常规”选项卡上,将操作更改为“允许连接”:
在“范围”选项卡上,将“远程IP地址”更改为“这些IP地址”,并添加以下值:
选择“确定”保存您的更改。
有关更多详细信息,请参阅https://github.com/microsoft/WSL/issues/4139。
如果您遇到任何其他错误并且无法找出原因,请在https://github.com/ChaosinaCan/vscode-remote-x11/issues创建问题,并发布您的日志,我会尽力帮助。
如果您使用SSH,请启用remoteX11.SSH.verboseLogging设置,以将有关SSH连接的技术详细信息记录到“Remote X11 (SSH)”日志中,并在问题报告中包含这些信息。这对于查找服务器不支持您的私钥使用的算法等问题很有用。
本站所有资源都是由网友投稿发布,或转载各大下载站, 请自行检测软件的完整性!
本站所有资源仅供学习与参考,请勿用于商业用途,否则 产生的一切后果将由您自己承担!
如有侵权请联系我们删除下架,联系方式:study_golang@163.com