用-X SSH时,“警告:不可信的X11转发设置失败:xauth密钥数据未生成”是什么意思?


134

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

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

我可以做些什么使这个警告消失吗?如果没有,我可以放心地忽略它吗?

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

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

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


1
是否在ubuntu服务器上安装了xauth程序?
slubman

sudo apt-get install xauth告诉我“ xauth已经是最新版本”
Daryl Spitzer

在ubuntu服务器上登录后,“哪个xauth”的输出是什么?
slubman 2011年

确实,我认为您应该阅读以下解释:mail-archive.com/cygwin-xfree@cygwin.com/msg17927.html…您可以忽略此警告
slubman 2011年

2
有时这可能是由于您的〜/ .Xauthority文件问题引起的。如果删除它,它将在下次尝试登录时重新创建。
迈克尔,2012年

Answers:


145

有什么理由不想使用-Y标志而不是-X标志?

简而言之,-X和-Y的区别在于-Y启用了受信任的X11转发。


4
不,我只是在写问题时才不知道-Y标志。我相信这确实是一个解决方案。更改您的答案,这样就不成问题了(如果您简要地解释了-Y和-C之间的区别,那将是很好的选择),我会接受的。
达里尔·斯皮策

有什么情况下您不想使用-Y而不是-X的?
公鸡

@Rooster对于不支持-Y的非常旧的系统,我想说
Petr

故障排除技巧:运行“ ssh -vv ...”并查找xauth行和任何错误消息。您可以尝试运行直接显示的xauth行。对于我来说,我需要它类似于“ xauth list:0”(受信任)而不是“ xauth -f / tmp / ssh ... list:0”(不受信任)。远程主机/ etc / ssh / ssh_config(或〜/ .ssh / config)中的-Y已修复,“ ForwardX11Trusted yes”已修复。
柯蒂斯·雅洛普

此解决方案也可与Cygwin / X一起使用。
linux64kb '18

25

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

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


1
谢谢!我不知道刚刚从XQuartz页面顶部下载的XQuartz实际上不是最新版本。
craigds

值得注意的是,brew install xquartz当前安装的版本为2.7.7。
Martin Cleaver

brew install Caskroom/cask/xquartz应该会通过HomeBrew为您提供最新的XQuartz
Nick

或更短brew cask install xquartz
富兰克林于

17

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


15

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

这个术语实际上使我困惑了很多年。我以为“信任”连接更安全。但是实际上,在连接值得信赖并且您希望在不妨碍其他安全措施的情况下运行内容时,应该使用该选项。“不可信”是使它(某种程度上)更安全地处理不可信远程主机。

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

还需要注意的是,“不信任” X11转发会在一定时间后关闭,以防止您意外打开它。之后,尝试打开窗口的新尝试将失败。在我阅读足够的文档以了解发生了什么之前,这让我感到好几次。


9

我没有可以显示这种行为的设置,因此这是黑暗中的镜头:

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


一个可以ssh -Y用来进行受信任的X11转发,但是如何解决不信任的呢?
帕维尔·西默达(PavelŠimerda)

我在Redhat中遇到了同样的错误,现在我可以通过/etc/ssh/ssh_config在客户端编辑配置文件来解决它。谢谢
Gangadhar Jannu '18

7

注意(由于阅读不完整的答案而导致安全漏洞,这很烦人)

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

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

安全解决方案:

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

2 /加

XAuthLocation /opt/X11/bin/xauth

在$ HOME / .ssh / config中

3 / ssh -X you_server安全处理


6

如果安装xauth无法正常进行,则一个特别令人讨厌的情况可能是.Xauthority文件损坏。这种特殊情况使某些X客户端可以工作,但其他客户端却无法在较新的显示器上失败。删除并重新创建.Xauthority文件可以解决该问题。


6

排除服务器端问题

首先,您应该排除任何服务器端问题。您是否可以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

3

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

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

Host *
    XAuthLocation /opt/X11/bin/xauth

现在ssh -X主机名有效(XQuartz 2.7.11,macOS 10.4 Mojave)


0

我已经安装了最新的XQuartz 2.7.11,但是自那时以来,我想我也已经对该操作系统进行了几次更新。我重新安装了XQuartz 2.7.11,现在工作正常。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.