由于错误的身份验证,X11连接被拒绝。

35

使用X11Forwarding访问Firefox时,我遇到了一个错误。

[root@station2 ~]# firefox
KiTTY X11 proxy: wrong authorisation protocol attemptedKiTTY X11 proxy: wrong authorisation protocol attemptedError: cannot open display: localhost:10.0

设置以下的值:/etc/ssh/sshd_config

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

**已安装该软件包**

#yum install xorg-x11-xauth
#yum -y install xauth

[root@station2 .ssh]# echo $DISPLAY
localhost:10.0

#mkxauth -c
adding key for station2.example.com to /root/.Xauthority ... done

1
Michael的答案是正确的。这是我找到的最好的教程:http://blog.linuxjunkie.com/blog/2012/09/26/x11forwarding-via-ssh-ubuntu-lightdm/ - Ho1
请注意,Stack Overflow仅适用于有关_编写软件_的问题;有关使用UNIX系统的问题应在[unix.se]提出。 - Charles Duffy
“mkxauth” 命令是从哪里来的?你是不是想说 “xauth”?“mkxauth” 在我的 Fedora 和 Ubuntu 上都不可用,而 xauth 在两个系统上都可以使用(尽管没有“-c”选项)。 - Kiteloopdesign
4个回答

113
export XAUTHORITY=$HOME/.Xauthority

这个修复方法对我起了作用


谢谢,这对我的情况有效。(在AWS EC2上启用RHEL 8中的ssh X) - Younes LAB
4
请问您能否提供一份解释,说明这是如何解决问题的? - Eyad Mohammed Osama
这对我有用。知道原因会更好。由于某种原因,XAUTHORITY 已设置为 /tmp/kde-<username>/xauth-<numbers>。 - Plebala
这个方法在我的树莓派4上的Ubuntu服务器上有效。谢谢! - Chaitanya Bankanhal
1
像1990年一样转发X11 - Kiteloopdesign
显示剩余4条评论

11

有一种场景非常难以找到(通过搜索引擎),甚至可能不可能出现,会导致该错误消息。

初步说明:本答案的主题并不是讨论在没有显示器的远程Web服务器上使用图形桌面作为root是否安全或者可推荐。

场景:

  • 远程互联网连接的Linux服务器S将域名example.com指定为其公共IP4地址192.0.2.1。
  • S上的/etc/hostname文件包含单行example
  • S上的/etc/hosts文件包含行127.0.0.1 localhost example.com example
  • (S上的) sshd配置禁止root登录,具体方法是在/etc/ssh/sshd_config中使用DenyUsers root,但允许虚拟用户user1。从客户端计算机C作为用户user1使用ssh参数-X-Y连接到S。

然后,在由user1拥有的S上的远程终端中,如果尝试以root身份执行任何与X11相关的命令,无论是通过

su,然后尝试启动X11桌面环境

还是像具体情况中执行一个包含

#!/bin/bash
su --preserve-environment -c "xfce4-session &" root

错误消息

X11连接由于身份验证错误而被拒绝。

这个错误会在任何与X11相关的程序启动失败时输出。 root用户环境中的DISPLAY变量包含

example.com:10.0

解决此问题的一种方法是,在这种特殊情况下修改该行:

127.0.0.1 localhost example.com example

在/etc/hosts文件中

127.0.0.1 localhost

哥们,你的回答救了我!问题出在我的 host 文件上,现在已经解决了!能否请你把这个解决方案放在你的回答顶部,这样其他人也可以找到解决方法吗? - Ho1
@Ho1:当我在互联网上搜索“我的”错误信息的原因时,我自己也有过经验,仅仅阅读标题并不真正有帮助。由于许多参数可能会产生影响,因此需要进行彻底的阅读。我不是拒绝帮助的观点,而是认为首先需要详细研究案例,以便自己决定是否尝试他人的解决方案。 - Michael Besteck
你真是个救命恩人,只需要在下面的解决方案中加入这一行就像魔术一样! - Waheed

3
解决办法:用与你SSH登录相同的用户运行应用程序。
我在使用X11时也遇到了此类错误。
我的问题源于我使用了自己的用户名(不是root)进行SSH。
然后,在登录后,我尝试使用"su"或"sudo"来运行X11操作, 问题在于SSH会话配置为你自己的用户名 - 例如:Raj,但随后你切换到用户root,这个用户不是X11会话的一部分。
因此,你应该简单地尝试以启动X11会话的相同用户运行应用程序(例如firefox)。
希望这可以帮到你。
Talel。

1
我在使用ssh -t -Y运行gvim时遇到了问题,对我有效的解决方案是:
xauth add $(xauth -f ~<logon_user>/.Xauthority list | tail -1) ; export NO_AT_BRIDGE=1 # gvim X11 fix for remote GUI failure after su

我不知道我在哪里找到了这个答案,所以无法给作者以功劳。


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