快速说明:我在托管 WSL Ubuntu 发行版的 Windows 机器上运行了 X-server。我可以在本地和远程启动 GUI 程序。例如,我可以gvim
从本地 WSL 启动,也可以gvim
在 SSH 会话时启动。
WSL 非常适合与远程服务器通信,我已经设法让 X 转发工作。然而,当我运行命令时,我不断收到以下额外文本。我想知道这是否意味着我所有的 GUI 会话都不安全?如果它没有表明太多潜在威胁,我可以接受这样的消息。ssh -X user@machine_ip
Warning: No xauth data; using fake authentication data for X11 forwarding.
我已经运行了以下安装程序和配置步骤,但在最后一步失败了:
mv ~/.Xauthority ~/old.Xauthority
sudo apt install ssh xauth xorg -y
touch ~/.Xauthority
xauth generate $DISPLAY .
我将收到以下错误消息
xauth: (argv):1: couldn't query Security extension on display "localhost:0.0"
我一直在三台 Windows 机器(两台笔记本电脑和一台台式机)上重现所描述的问题,但不知何故设法摆脱Warning: No xauth data;
了第四台台式计算机上的“”消息。然后我将以下内容从第四台台式计算机复制到其余三台计算机,但没有任何改进。
- 文件内容
~/.Xauthority
, - 将以下内容添加到
/etc/ssh/config
:
ForwardAgent no
ForwardX11 no
ForwardX11Trusted yes
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
XauthLocation /usr/bin/xauth
- 将以下内容添加到
~/.ssh/config
:
Host *
ForwardAgent yes
ForwardX11 yes
ForwardX11Trusted yes
Protocol 2
GSSAPIDelegateCredentials no
XAuthLocation /usr/bin/xauth
最后,我不断xauth
在所有运行 WSL (Ubuntu 18.04 LTS) 的有问题的 Windows 机器上与程序进行以下“对话”。
User @ machine ➜ ~ xauth
Using authority file /home/llinfeng/.Xauthority
xauth> generate $DISPLAY
xauth: (stdin):2: unable to open display "$DISPLAY".
xauth> generate $DISPLAY .
xauth: (stdin):3: unable to open display "$DISPLAY".
xauth> add $DISPLAY .
xauth: (stdin):4: bad "add" command line
xauth>
检查手册后xauth
,add
似乎是一个有效的命令。
我已经尝试了三个 WSL 发行版,它们都产生相同的“ No xauth data
”错误消息。Microsoft Store 的三个发行版包括:Ubuntu、Ubuntu 18.04 LTS 和 Pengwin (Debian)。
请告知如何获取xauth
命令以生成一些正确的“xauth 数据”。
你必须安装像 Xming 这样的 X 服务器才能工作,因为 Windows 没有 X 服务器。
ssh 只是将远程机器的 X Server 请求转发给你的,如果你没有它,它会抛出一个错误。
安装 Xming 后,在 WSL shell 而不是 ssh 中输入以下命令
每次打开新终端时都必须执行此命令
您也可以将其添加到
~/.bashrc
如果它不起作用,也安装 xterm,它会安装所有 X 库。在 ubuntu 上
然后你可以像平常一样使用 xauth
您也可以使用禁用它
xauth +
-Y
如果你想使用 X 转发,你还必须使用 ssh 的标志。如果您安装了 xming 但它无法正常工作,请确保已设置 DISPLAY 变量。这个变量应该只在 WSL 上设置,你可以使用 xauth。
根据帖子和您的回答,除此错误消息外,一切正常。
该消息似乎说“伪造的身份验证数据”已发送到远程会话。我看不出如何使用这些数据可以使任何远程攻击者受益,所以我不明白为什么简单地忽略“没有 xauth 数据”的警告是不安全的。
WSL 不是 Linux 的完整实现。许多系统调用和库已实现,但也有很多未实现。
我的个人意见:我会说您可以安全地将错误消息视为来自此类错误实现或未实现的功能,而忽略它。
可能与您的情况相关,也可能不相关,但我在使用 xauth 命令时遇到了问题,因为:
对于它的价值,我通过将 XAUTHORITY 环境变量设置为 wsl ext4 文件系统中的某个路径来解决这个问题。
同上 .ICEauthority 和 ICEAUTHORITY env var。(即使 iceauth 手册页没有提到 ICEAUTHORITY env var,它似乎工作。)