如何防止警告 No xauth data; 使用伪造的身份验证数据进行 X11 转发?

sor*_*rin 96 ssh x11

每次我从 Mac 启动 ssh 连接到 Linux (Debian) 时,我都会收到此警告:

No xauth data; using fake authentication data for X11 forwarding.
Run Code Online (Sandbox Code Playgroud)

对于使用 ssh 的工具,如 git 或 mercurial,也会发生这种情况。

我只想对我的系统进行本地更改,以防止出现这种情况。

注意:我的 Mac OS X (10.8.1) 上确实有 X11 服务器 (XQuartz 2.7.3 (xorg-server 1.12.4)) 并且它工作正常,我可以在本地或远程成功启动时钟。

小智 109

没有一个已发布的解决方案对我有用。我的客户端(桌面)系统运行的是 macOS 10.12.5 (Sierra)。我添加-vssh命令的选项,它告诉我,

debug1: No xauth program.
Run Code Online (Sandbox Code Playgroud)

这意味着它没有正确的xauth程序路径。(在此版本的 macOS 上,路径xauth是非标准的。)解决方案是将此行添加到/etc/ssh/ssh_config(可能/etc/ssh/config在某些设置中)或~/.ssh/config(如果您没有管理员权限):

XAuthLocation /opt/X11/bin/xauth
Run Code Online (Sandbox Code Playgroud)

现在警告信息消失了。

  • 我的天啊。多年来,我一直在努力寻找解决方案,这奏效了。年我说!请注意,我通过在我的 `~/.ssh/config` 文件中的 `Host *` 条目下添加该行而不是编辑 `/etc/ssh/ssh_config` 来做到这一点。我为此找到的唯一文档是“man sshd_config”。 (19认同)
  • 请注意,即使您的 shell 可以在 PATH 中找到 xauth,您也可能会遇到此问题!我猜 ssh 客户端出于安全原因正在清理您的 PATH? (2认同)
  • 这个解决方案对我不起作用。我在 Win7 上使用 Cygwin。添加“XAuthLocation /usr/bin/xauth”,无论是在“Host *”条目下,还是在该行之前,在 ~/.ssh/config 中,都没有区别。 (2认同)

sor*_*rin 24

找到原因,我的~/.ssh/config不完整,你需要两个:

Host *
    ForwardAgent yes
    ForwardX11 yes
Run Code Online (Sandbox Code Playgroud)

我的错误是我只包含了 ForwardX11 选项。

  • 我不确定为什么需要/相关。`ForwardAgent` 用于允许缓存在 `ssh-agent` 中的密钥通过多个嵌套的 SSH 连接。它应该与 X11 没有任何关系。fwiw,据一些人说,在安全方面这不是一个好主意:https://heipei.github.io/2015/02/26/SSH-Agent-Forwarding-thinked-harmful/ (16认同)
  • 这听起来不对,真正有用的是关闭 X11 转发或修复 xauth 配置以进行设置。它与 ssh 代理无关。 (3认同)
  • 这个解决方案对我不起作用。 (2认同)
  • 在 Mac OS 上,我还必须添加“XAuthLocation /opt/X11/bin/xauth” (2认同)

小智 19

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

  • 第一的

安装以下所有内容。在 Window 上,安装Xming. 在 Ubuntu bash 上,使用sudo apt install来安装ssh xauth xorg.

sudo apt install ssh xauth xorg
Run Code Online (Sandbox Code Playgroud)
  • 第二

转到包含ssh_config文件的文件夹,我的是/etc/ssh.

  • 第三

ssh_config以管理员身份编辑(USE sudo)。里面ssh_config,删除哈希#中的台词ForwardAgentForwardX11ForwardX11Trusted,和相应的参数设置yes

# /etc/ssh/ssh_config

Host *
    ForwardAgent yes
    ForwardX11 yes
    ForwardX11Trusted yes
Run Code Online (Sandbox Code Playgroud)
  • 向前

ssh_config文件中,去掉 和 前面的哈希#Port 22并在文件Protocol 2末尾追加一个新行来说明 xauth 文件的位置,XauthLocation /usr/bin/xauth,记得写自己的 xauth 文件路径。

# /etc/ssh/ssh_config

#   IdentifyFile ...
    Port 22
    Protocol 2
#   Cipher 3des
#   ...
#   ...
    ...
    ...
    GSSAPIDelegateCredentials no
    XauthLocation /usr/bin/xauth
Run Code Online (Sandbox Code Playgroud)
  • 第五

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

# ~/.bashrc
...
...
export DISPLAY=localhost:0
Run Code Online (Sandbox Code Playgroud)
  • 最后的

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

ssh -X yourusername@yourhost
Run Code Online (Sandbox Code Playgroud)

问题也出在 Windows 上的 Ubuntu 子系统中,链接位于

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

注意:链接的文本包含 2 个错别字(XauthLocaion而不是XauthLocation

  • 需要编辑:`XauthLocaion` -> `XauthLocation`(那个编辑对我来说太小了)。 (2认同)

小智 13

如前所述,似乎xauth在 OS X Yosemite 上已经退化到一个不适用于 XQuartz$DISPLAY设置的旧版本:

% xauth -V
1.0.9
% xauth generate $DISPLAY .
xauth: (argv):1:  bad display name "/private/tmp/com.apple.launchd(...)/org.macosforge.xquartz:0" in "add" command
Run Code Online (Sandbox Code Playgroud)

  • @guest 你的 `xauth generate $DISPLAY .` 命令在我的 Mac OS X High Sierra (10.13) 上工作,它解决了我的 `No xauth data; 使用伪造的身份验证数据进行 X11 转发。` pb。 (2认同)