如何在 Windows 10 上设置 VcXSrv.exe 以与 WSL2 配合使用而不禁用访问控制?互联网上的每个描述都显示禁用访问控制,但这允许本地网络上的任何程序记录您的击键和鼠标移动等。
sfm*_*tyo 31
您应该使用 .Xauthority 文件在 X11 客户端和 VcXSrv X11 服务器之间共享密钥,而不是禁用 VcXSrv 上的访问控制。.Xauthority 包含由 DISPLAY 索引的授权密钥的集合。您需要使用特定 Windows 主机的密钥设置此文件,并在 VcXSrv 和 WSL2 发行版上运行的 X11 客户端之间共享该文件。要进行此设置,请按照下列步骤操作:
运行 WSL2 发行版(假设这是基于 debian 的发行版)并安装 xauth、md5sum 和 gawk 或 awk。我们还将安装一些 X11 客户端来测试我们的设置。在这种情况下,我们将安装 gnome-terminal,但如果您愿意,您可以安装其他东西。在 Ubuntu 发行版上,您可以执行以下操作:
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}
Run Code Online (Sandbox Code Playgroud)
将以下内容添加到 WSL2 发行版主目录中的 ~/.bashrc
export DISPLAY=host.docker.internal:0
Run Code Online (Sandbox Code Playgroud)
我们需要使用所需的命令行参数创建 XLaunch 配置文件(即 config.xlaunch )或 VcXSrv.exe 的快捷方式。XLaunch 是一个简单的启动器,可帮助设置参数并依次调用 vcxsrv.exe。我们将忽略使用 XLaunch 并仅使用适当的参数创建我们自己的快捷方式。我们想要使用这些参数运行 VcXSrv.exe:
vcxsrv.exe -multiwindow -clipboard -wgl -auth {.XAuthority file} -logfile {A Log file} -logverbose {int log level}
Run Code Online (Sandbox Code Playgroud)
从上面,我们将 .Xauthority 文件复制到 /mnt/c/Users/{WindowsUserName}/.Xauthority 这意味着我们所需的命令行是:
vcxsrv.exe -multiwindow -clipboard -wgl -auth "c:\users\{WindowsUserName}\.Xauthority" -logfile "c:\users\{WindowsUserName}\VcXSrv.log" -logverbose 5
Run Code Online (Sandbox Code Playgroud)
如果您不调试任何问题,请随意省略 logfile 和 logverbose 选项。所以你可以这样做:
vcxsrv.exe -multiwindow -clipboard -wgl -auth "c:\users\{WindowsUserName}\.Xauthority"
Run Code Online (Sandbox Code Playgroud)
请记住将 {WindowsUserName} 替换为 c:\Users 下的文件夹名称。
要创建快捷方式,请导航到 VcXSrv.exe 的安装位置。它的默认位置是
C:\Program Files\VcXSrv\VcXSrv.exe
Run Code Online (Sandbox Code Playgroud)
在资源管理器文件窗口中,右键单击 VcXSrv.exe,然后单击“创建快捷方式”。这将在您的桌面上创建一个快捷方式。
右键单击创建的快捷方式图标,然后选择属性。
在“快捷方式”选项卡中,将上面的参数附加到可执行文件之后。它应该看起来像:
"C:\Program Files\VcXSrv\VcXSrv.exe" -multiwindow -clipboard -wgl -auth "c:\users\{WindowsUserName}\.Xauthority"
Run Code Online (Sandbox Code Playgroud)
在“属性”对话框的“常规”选项卡中,将名称更改为“VcXSrv with XAuthority”。
单击“确定”。
现在您可以通过双击快捷方式启动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 客户端,并使其安全地显示在 Windows 主机上运行的 VcXSrv X11 服务器上。
export DISPLAY=host.docker.internal:0
gnome-terminal
Run Code Online (Sandbox Code Playgroud)
这应该会导致 gnome-terminal 显示在您的 X11 服务器上。此外,xauthority 文件将用于仅允许授权客户端连接到您的 X11 服务器。
| 归档时间: |
|
| 查看次数: |
28193 次 |
| 最近记录: |