警告:没有xauth数据;使用虚假的身份验证数据进行X11转发

19

当我在 Fedora 23 上向 Centos 7 进行 ssh 连接时,遇到了一个不幸的问题。命令 ssh -X user@centos7ssh -Y user@centos7 都会打印出 Warning: No xauth data; using fake authentication data for X11 forwarding.

通过谷歌搜索,发现需要在 /etc/ssh/ssh_config 中添加以下几行:

Host *
    ForwardX11Trusted yes
    ForwardAgend yes
    ForwardX11 yes

但是这并没有让警告信息消失。


3
也许这只是发布问题时的一个打字错误,但是应该使用“ForwardAgent”而不是“ForwardAgend”。 - Michael Berkowski
4个回答

24

对我来说,这个问题是由于我的Fedora系统没有一个~/.Xauthority文件引起的。

我通过在我的Fedora系统(客户端机器)上执行以下命令来创建一个:

xauth add :0 . `mcookie`

4
更加通俗易懂的翻译是:用以下命令生成xauth令牌:xauth generate :0 . - Lutz Prechelt
这样做可以消除警告,我的系统是 5.2.15-200.fc30.x86_64 - Gang
7
如果不是很明显的话(我之前犯了这个错误)- 你需要在客户端上运行这个程序。 - sandyscott
1
来自 openssh-portable 的文件 clientloop.c 的手动跟踪显示了消息仅取决于客户端。ssh 在本地运行“xauth list 127.0.0.1:0.0”。如果 xauth 返回无数据或错误,则 clientloop.c 将打印警告消息。正如 HeatfanJohn 所提到的,创建 .Xauthority 可以消除此警告。 - Brian Fitzgerald
1
第一个注释没有起作用:$xauth generate :0。 xauth:文件/home/XXX/.Xauthority不存在 xauth:(argv):1:无法在显示“:0”上查询安全扩展名 $xauth add:0。mcookie有效。 - fchen

11

让Ubuntu bash在Windows 10上运行ssh -X以在远程服务器上获得GUI环境

  • 第一步

安装以下所有内容。在Windows上安装X服务器,例如Xming。在Ubuntu bash上,使用sudo apt install安装ssh xauth xorg

sudo apt install ssh xauth xorg
  • 第二步

前往包含ssh_config文件的文件夹,我的是/etc/ssh

  • 第三步

以管理员身份(使用sudo)编辑ssh_config。在ssh_config中,删除行中的井号#,并将相应的参数设置为yes,这些行包括ForwardAgentForwardX11ForwardX11Trusted

# /etc/ssh/ssh_config

Host *
    ForwardAgent yes
    ForwardX11 yes
    ForwardX11Trusted yes
  • 第四

ssh_config 文件中,删除 Port 22Protocol 2 前面的井号 #,并在文件末尾添加一行以指定 xauth 文件位置,XauthLocation /usr/bin/xauth,请记得填写你自己的 xauth 文件路径。

# /etc/ssh/ssh_config

#   IdentifyFile ...
    Port 22
    Protocol 2
#   Cipher 3des
#   ...
#   ...
    ...
    ...
    GSSAPIDelegateCredentials no
    XauthLocation /usr/bin/xauth
  • 第五个

现在,既然我们已经编辑完了ssh_config文件,在离开编辑器时请保存它。现在进入文件夹~$HOME,将export DISPLAY=localhost:0添加到您的.bashrc文件中并保存它。

# ~/.bashrc
...
...
export DISPLAY=localhost:0
  • 最后

我们快完成了。重新启动你的bash shell,打开Xming程序并使用ssh -X yourusername@yourhost。然后就可以享受GUI环境了。

ssh -X yourusername@yourhost

问题也存在于Windows上的Ubuntu子系统,并且链接在

https://gist.github.com/DestinyOne/f236f71b9cdecd349507dfe90ebae776


哈哈哈哈,这就是我正在做的事情,谢谢伙计! - Ordiel
不要忘记 DISPLAY=localhost:0。使用 DISPLAY=:0 会破坏 Cygwin ssh + VnXsrv。 - gavenkoa
1
对于WSL,虽然您将能够成功进行X11转发,但仍会收到大量关于必须伪造xauth凭据和其他异常消息的烦人消息。在您的~/.bash_aliases中输入alias sshx="export DISPLAY=localhost:0; ssh -X",在~/.bashrc中源文件(而不是直接导出DISPLAY环境变量到您的~/.bashrc)。然后,使用tmux并使用sshx username@remote_host。完成后,关闭或分离该tmux会话,当您只使用WSL时,就不会收到那些烦人的消息了。 - ansebbian0

9
请参考https://serverfault.com/a/859370/423488,如果您遇到问题,可能需要在客户端系统的/etc/ssh/ssh_config文件中添加此行代码。
XAuthLocation /opt/X11/bin/xauth

但要使用你的客户端系统上实际的 xauth 程序路径(即你运行 ssh 的那台计算机)。你可以使用以下命令找到 xauth 的路径:

which xauth

-2
stderr 管道到一个子 shell,使用以下咒语过滤掉该消息。
ssh yourusername@yourhost commandToRun 2> >( sed '/Warning: No xauth data/d')

无需安装,无需配置,没有任何问题!


这个回答收到了一些负评,但在某些情况下,例如如果X服务器在没有使用“-auth”参数的情况下启动,即使没有进行X11转发,这也是一个预期的警告。在这些情况下,这个回答是正确的。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接