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

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

警告:不可信的X11转发设置失败:未生成xauth密钥数据警告:没有xauth数据; 使用假authentication数据进行X11转发。

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

X11转发似乎工作正常,虽然我看到这样的消息:

Xlib:扩展名“RANDR”缺less显示“localhost:10.0”。

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

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

很简单,-X和-Y之间的区别在于-Y使可信的X11转发。

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

编辑:一个固定的XQuartz已经在新的主页xquartz.org发布 ,并从那里安装最新版本(目前2.7.9)将解决这个问题。

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

在这种情况下,“不信任”意味着你不相信连接。 SSH将使用额外的安全措施来尝试使X11转发更安全。 “受信任”意味着您完全有信心在远程主机上无法访问您的Xauth数据,并使用它来监控您的按键。

这个术语实际上使我困惑多年。 我认为“可信”连接更安全。 但实际上,这是一个选项,你应该在连接值得信赖的情况下使用,而且你想在没有额外安全措施的情况下运行。 “不受信任”是使它(更安全)处理不可信的远程主机的一个。

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

另外需要注意的是,在一定的时间之后,“不可信”的X11转发将会closures,以防止您意外地将其closures。 之后,新的尝试打开窗户就会失败。 在我读了足够多的文档来理解发生的事情之前,我已经好几次了。

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

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

如果安装xauth不起作用,一个特别恼人的情况可能是一个损坏的.Xauthority文件。 这种特殊的情况允许一些X客户端工作,但是不会有更多倾向于更新显示器的客户端工作。 删除和重新创build.Xauthority文件可以解决这个问题。

排除服务器端的问题

首先,你应该排除任何服务器端的问题。 你能成功地从任何其他主机ssh -Xssh -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 #仅仅为了这个testing的伪装曲奇
  3. ssh -X localhost env |grep DISPLAY

预期结果:在ssh-to-self会话的远程端应该设置一个DISPLAYvariables。 如果你没有得到任何结果,你的服务器很可能是错误configuration的(例如,X11库和/或xauth命令可能会丢失;或者sshdconfiguration可能被设置为拒绝X11访问)

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

按照Will Angley的回答

检查ssh -vv -X输出

你引用的错误信息是一个症状,可能有很多原因。 用ssh -X -vv remotehost再试一次,这会给你提供更多线索,说明为什么X11隧道安装失败。

你看到下面的消息出现吗?

  debug1:没有xauth程序。

如果是这样,

  1. 记下您的客户端系统上的哪个位置, xauth命令驻留在:
     哪个xauth 
  2. 在〜/ .ssh / config的最后添加以下内容(并添加注释以提醒您将来保留它):
     主机*
         XAuthLocation / opt / X11 / bin / xauth
    

    根据步骤1的结果调整此path – 向Jan-Willem Arnold发放信用

我已经安装了最新版本的XQuartz 2.7.11,但是我觉得自那以后我也更新了一些操作系统。 我重新安装XQuartz 2.7.11,现在它工作正常。

xauth add`hostname` / unix:10 MIT-MAGIC-COOKIE-1`openssl rand -hex 16`