快速澄清:我在托管 WSL Ubuntu 发行版的 Windows 机器上运行了 X-server。我可以在本地和远程启动 GUI 程序。例如,我可以gvim
从本地 WSL 启动,也可以gvim
在 SSH 会话中启动。
WSL 非常适合与远程服务器通信,我已经设法使 X-forwarding 正常工作。然而,我不断收到以下信息附加文本当我运行ssh -X user@machine_ip
命令时。我想知道这是否意味着我的所有 GUI 会话都是不安全的?如果这条消息没有表明存在太大的潜在威胁,我可以接受。
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 数据”。
答案1
根据帖子和您的回答,除了这个错误信息之外,一切正常。
该消息似乎表示“虚假身份验证数据”已发送到远程会话。我看不出使用这些数据对任何远程攻击者有什么好处,所以我不明白为什么简单地忽略“无 xauth 数据”的警告是不安全的。
WSL 不是 Linux 的完整实现。许多系统调用和库都已实现,但还有很多尚未实现。
我的个人观点:我想说您可以放心地将错误消息视为来自这种错误实现或未实现的功能,然后忽略它。
答案2
您必须安装像 Xming 这样的 X 服务器才能使其工作,因为 Windows 没有 X 服务器。
ssh 只是将远程机器的 X 服务器请求转发给您的机器,如果您没有它,它就会引发错误。
安装 Xming 后,在 WSL shell 而不是 ssh 中输入以下命令
export DISPLAY=:0
每次打开新终端时都必须执行此命令
您还可以将其添加到~/.bashrc
如果它不起作用,也安装 xterm,它会安装所有 X 库。在 ubuntu 上
sudo apt update;sudo apt install xterm
然后你可以像平常一样使用 xauth
您也可以使用以下方法禁用它xauth +
-Y
如果您想使用 X 转发,您还必须使用 ssh 的标志。
ssh -Y user@host
如果您安装了 xming 但它不起作用,请确保设置了 DISPLAY 变量。此变量应仅在 WSL 上设置,并且您可以使用 xauth。
export DISPLAY=:0
答案3
可能与您的情况相关也可能不相关,但我在使用 xauth 命令时遇到了问题,因为:
- 我正在安装一个 drvfs 文件系统,并将其用作我的主
- drvfs 不支持链接——无论是硬链接还是符号链接
- xauth 尝试使用链接
不管怎样,我通过将 XAUTHORITY 环境变量设置为 wsl ext4 文件系统中的某个路径来解决了这个问题。
同上 .ICEauthority 和 ICEAUTHORITY 环境变量。(尽管 iceauth 手册页没有提到 ICEAUTHORITY 环境变量,但它似乎可以工作。)