使用 -X 进行 ssh 连接时,“警告:不受信任的 X11 转发设置失败:未生成 xauth 密钥数据”是什么意思?

Dar*_*zer 164 ssh x11forwarding warning

当我ssh -X在 Mac(运行 OS X 10.6.7)上使用连接到我的 Ubuntu (11.04) 框时,我收到以下警告:

警告:不受信任的 X11 转发设置失败:未生成 xauth 密钥数据警告:无 xauth 数据;使用伪造的身份验证数据进行 X11 转发。

我能做些什么来消除这个警告吗?如果没有,我可以安全地忽略它吗?

X11 转发似乎工作正常,但我确实看到了以下消息:

Xlib:显示“localhost:10.0”上缺少扩展“RANDR”。

这与警告有关吗?(我猜不是。如果不是,我将就此提出一个新问题。)

use*_*336 182

试试 ssh -Y

您不想使用-Y标志而不是-X标志的任何理由?

很简单,之间的区别-X,并-Y-Y能够信任的X11转发。

  • 不,我只是在写问题时不知道 -Y 标志。我相信这确实是一个解决方案。改变你的答案,让它不是一个问题(如果你简要解释 -Y 和 -C 之间的区别会很好),我会接受它。 (4认同)
  • 注意`-Y` 不会_使_您的连接受信任或更受信任。相反,它_要求_它_在_您使用该选项之前_被信任。`-Y` 使 ssh 放弃一些在您使用 `-X` 时会提供的篡改保护。 (3认同)

Wil*_*ley 25

如果您在 2015 年来到这里:即使其他一切都设置正确,当使用ssh -X和运行 XQuartz 版本 <= 2.7.7时,这也可能发生在 Mac OS X 10.10 Yosemite 上。根本原因是 X11 显示套接字被写入 xauth 搜索路径之外:XQuartz 跟踪器中的问题#2068

编辑:此后在新主页xquartz.org 上发布了一个固定的 XQuartz ,从那里安装最新版本(当前为 2.7.9)将解决该问题。


Flu*_*lup 18

如果您在使用 时也收到相同的消息-Y,则该xauth程序可能在服务器上丢失。在类似 Debian 的系统上,您需要该xauth软件包。在类似 RedHat 的系统上,您需要该xorg-x11-xauth软件包。


小智 18

小心(厌倦阅读不完整的答案会导致安全漏洞)

  1. 使用 ssh -Y 意味着这里有虚假的 xauth 信息,这很糟糕!

  2. ssh -X 应该可以工作,因为 XQuartz 一旦启用,就会使用 xauth。唯一的问题是 ssh 正在 /usr/X11R6/bin 中寻找 xauth,而在带有 XQuartz 的 macos 中,它在 /opt/X11/bin 中

安全解决:

  1. 启用首选项(Cmd-,) 的“安全”选项卡中的第一个选项,该选项启用经过身份验证的连接

  2. 将以下内容添加到 $HOME/.ssh/config

    XAuthLocation /opt/X11/bin/xauth

  3. ssh -X you_server 以安全的方式工作


小智 17

在这种情况下,“不受信任”意味着您不信任该连接。SSH 将使用额外的安全措施来尝试使 X11 转发更安全。“受信任”意味着您完全相信远程主机上的任何人都不会访问您的 Xauth 数据并使用它来监视您的击键等。

这个术语实际上让我困惑了多年。我认为“可信”连接更安全。但实际上,这是一个您应该在连接值得信赖的情况下使用的选项,并且您希望在没有额外安全措施妨碍您的情况下运行东西。“不受信任”是使处理不受信任的远程主机(有点)更安全的方法。

“不受信任”连接试图通过启用 X11 安全扩展并禁用您(希望)不需要的其他扩展来限制黑帽可以对您做什么。这可能就是使用 -X 禁用 RandR 的原因。您是否需要能够从远程主机旋转您的 X 显示器?

同样重要的是要注意“不受信任的”X11 转发会在一定时间后关闭,以防止您不小心将其打开。之后打开窗口的新尝试将失败。在我阅读足够多的文档以了解正在发生的事情之前,这让我咬了好几次。


Dom*_*omQ 12

排除服务器端问题

首先,您应该排除任何服务器端问题。你ssh -X能从任何其他主机成功吗?不ssh -Y工作,同时ssh -X不?在任何一种情况下,假设 ssh + X11 在您的服务器上设置正确,然后继续下一部分。

如果您无法检查(例如,您只有一台运行 X11 的笔记本电脑),您可以ssh使用假会话从服务器到自身:

  1. export DISPLAY=:44# (Bourne shell) 或
    setenv DISPLAY :44# (csh / tcsh)
  2. xauth add $DISPLAY MIT-MAGIC-COOKIE-1 1234 # 仅用于本次测试的假饼干
  3. ssh -X localhost env |grep DISPLAY

预期结果:应该在 ssh-to-self 会话的远程端设置一个 DISPLAY 变量。如果没有结果,您的服务器可能配置错误(例如 X11 库和/或xauth命令可能丢失;或者 sshd 配置可能设置为拒绝 X11 访问)

在 Mac 上:检查 Xquartz 是否是最新的

根据威尔·安利的回答

检查ssh -vv -X输出

您引用的错误消息是一种可能有多种原因的症状。使用 再试一次,这应该会为您提供有关 X11 隧道设置失败原因的其他线索。ssh -X -vv remotehost

您是否看到出现以下消息?

debug1:没有 xauth 程序。
如果是这样的话,

  1. 记下您的客户端系统上的xauth命令所在的位置:
    哪个xauth
  2. 在 ~/.ssh/config 的最后添加以下内容(并添加注释以提醒自己将来保留它):
    主持人 *
        XAuthLocation /opt/X11/bin/xauth
    
    根据步骤 1 的发现调整此路径 —感谢 Jan-Willem Arnold


Mic*_*man 9

我没有可以表现出这种行为的设置,所以这是黑暗中的一个镜头:

如果为发出此警告的主机设置ForwardX11Trusted"no",则警告可能会被抑制。您可以将其放置在~/.ssh/config或 中/etc/ssh/ssh_config,并且您可以通过包含Host <hostname>在上面的行中来使选项特定于特定主机。该<hostname>组件与您在命令行上键入的内容(不是解析的主机名)相匹配,并且它可以包含通配符。


小智 6

如果安装xauth不正常,一个特别烦人的情况可能是.Xauthority文件损坏。这种特殊情况允许一些 X 客户端工作,但不允许其他更倾向于使用较新的显示器失败的客户端。删除并重新创建.Xauthority文件可以解决该问题。


小智 6

正如上面已经解释的,以下内容对我有用:

编辑~/.ssh/config以添加行

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

现在ssh -X 主机名可以工作(XQuartz 2.7.11、macOS 10.4 Mojave)