首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何设置与WSL2一起使用的VcXSrv

如何设置与WSL2一起使用的VcXSrv
EN

Stack Overflow用户
提问于 2021-03-24 01:22:29
回答 1查看 2.8K关注 0票数 4

在不禁用访问控制的情况下,如何在Windows10上设置VcXSrv.exe以使用WSL2?互联网上的每一个描述都显示禁用访问控制,但这允许本地网络上的任何程序记录您的击键和鼠标移动等。

EN

Stack Overflow用户

发布于 2021-03-24 01:25:49

用于WSL2的Windows 10专业版20H2安装程序

您应该使用.Xauthority文件在X11客户端和VcXSrv X11服务器之间共享密钥,而不是禁用VcXSrv上的访问控制。.Xauthority包含由显示器索引的授权密钥的集合。您需要为您的特定Windows主机设置该文件的密钥,并在VcXSrv和您的WSL2发行版上运行的X11客户端之间共享该文件。要进行此设置,请执行以下步骤:

运行你的WSL2发行版(假设这是一个基于debian的发行版)并安装xauth、md5sum和gawk或awk。我们还将安装一些X11客户端来测试我们的设置。在这种情况下,我们将安装gnome-terminal,但如果您愿意,也可以安装其他东西。在Ubuntu发行版上,您可以执行以下操作:

代码语言:javascript
运行
复制
sudo apt install -y xauth coreutils gawk gnome-terminal 
xauth list # this should be an empty list
magiccookie=$(echo '{some-pass-phrase}'|tr -d '\n\r'|md5sum|gawk '{print $1}')
xauth add host.docker.internal:0 . $magiccookie
cp ~/.Xauthority /mnt/c/Users/{WindowsUserName}

将以下内容添加到WSL2发行版主目录中的~/.bashrc中

代码语言:javascript
运行
复制
     export DISPLAY=host.docker.internal:0

我们需要创建一个XLaunch配置文件(即config.xlaunch ),或者创建一个带有所需命令行参数的VcXSrv.exe快捷方式。XLaunch是一个简单的启动器,它帮助设置参数并调用vcxsrv.exe。我们将忽略XLaunch的使用,只使用适当的参数创建我们自己的快捷方式。我们希望使用以下参数运行VcXSrv.exe:

代码语言:javascript
运行
复制
vcxsrv.exe -multiwindow -clipboard -wgl -auth {.XAuthority file} -logfile {A Log file} -logverbose {int log level}

从上面开始,我们将用户文件复制到/mnt/c/ .Xauthority /{WindowsUserName}/.Xauthority,这意味着我们需要的命令行是:

代码语言:javascript
运行
复制
vcxsrv.exe -multiwindow -clipboard -wgl -auth "c:\users\{WindowsUserName}\.Xauthority" -logfile "c:\users\{WindowsUserName}\VcXSrv.log" -logverbose 5

如果您没有调试任何问题,可以随意省略logfile和logverbose选项。所以你可以这样做:

代码语言:javascript
运行
复制
vcxsrv.exe -multiwindow -clipboard -wgl -auth "c:\users\{WindowsUserName}\.Xauthority"

请记住将{WindowsUserName}替换为c:\Users下的文件夹名称。

要创建快捷方式,请导航到VcXSrv.exe的安装位置。它的默认位置是

代码语言:javascript
运行
复制
C:\Program Files\VcXSrv\VcXSrv.exe

在浏览器文件窗口中,右键单击VcXSrv.exe,然后单击“创建快捷方式”。这将在您的桌面上创建一个快捷方式。

右键单击创建的快捷方式图标,然后选择属性。

在快捷方式选项卡中,将上面的参数追加到可执行文件之后。它应该看起来像这样:

代码语言:javascript
运行
复制
"C:\Program Files\VcXSrv\VcXSrv.exe" -multiwindow -clipboard -wgl -auth "c:\users\{WindowsUserName}\.Xauthority"

在属性对话框的常规选项卡中,将名称更改为“带有XAuthority的VcXSrv”。

单击“确定”。

现在,您可以通过双击快捷方式来启动X11服务器。

如果您希望在启动时启动X11服务器,请按照此处的说明操作:https://support.microsoft.com/en-us/windows/add-an-app-to-run-automatically-at-startup-in-windows-10-150da165-dcd9-7230-517b-cf3c295d89dd

现在回到WSL发行版终端,您应该能够运行gnome-terminal或其他X11客户端,并将其安全地显示在运行在VcXSrv主机上的X11服务器上。

代码语言:javascript
运行
复制
export DISPLAY=host.docker.internal:0
gnome-terminal

这应该会导致gnome终端显示在您的X11服务器上。此外,xauthority文件将用于只允许授权的客户端连接到您的X11服务器。

票数 5
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66768148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档