如何调试“由于身份验证错误而拒绝X11连接”


10

我通过SSH转发X时遇到问题。我已经奋斗了很长时间,但似乎没有人可以提供帮助。

我现在采取不同的策略。我想知道如何调试错误?

我应该查看哪些日志,应该设置哪些其他标志(-v等),以及应该寻找什么?

进一步编辑:

如果我将Putty登录到服务器并尝试登录,则会xeyes得到:

PuTTY X11代理:尝试了错误的授权协议错误:无法打开显示:localhost:10.0

如果xauth generate $DISPLAY我得到:

PuTTY X11代理:尝试的授权协议错误xauth:(argv):1:无法打开显示“ localhost:10.0”。


在前一天的问题中,您描述了不同的症状。您是否还在遭受“无法打开显示器”的困扰,还是解决了这个问题?如果您解决了该问题,并且对该问题的答案之一有所帮助,则应选择它作为对帮助您的人的奖励。
Kenster 2014年

同意,这是一个不同的错误,我已经解决了这个问题。
wkdmarty 2014年

查看此答案是否适用于您的服务器。
Kenster 2014年

Kenster,我的服务器上没有rc文件,因此我创建了一个并粘贴了代码。没有不同。
wkdmarty 2014年

在PuTTY日志中,这是在我尝试运行x程序(SSH登录后)后出现的。2014-09-01 15:16:38从127.0.0.1:59566 2014-09-01 15:16:38收到X11连接请求已成功打开X11正向连接成功2014-09-01 15:16:38没有东西可发送,关闭频道2014-09-01 15:16:38转发的X11连接终止
wkdmarty 2014年

Answers:


13

我的解决方案逐步:

1)使用选项-X远程主机登录root登录

$ ssh -X root@192.168.1.39

2)检查是否存在.Xauthority文件

[root @ localhost〜]#ls -al
[root @ localhost〜]#vim .Xauthority

3)复制.Xauthority文件到其他用户目录

[root @ localhost〜]#cp .Xauthority / home / oracle /
cp:覆盖`/home/oracle/.Xauthority'吗?ÿ

4)为此文件设置权限

[root @ localhost〜]#chown oracle:oinstall .Xauthority
[root @ localhost〜]#chmod 0600 .Xauthority

5)登录oracle用户

[root @ localhost〜]#su-甲骨文

6)在localhost:10.0中显示设置

[oracle @ localhost〜] $ echo $ DISPLAY
本地主机:10.0
[oracle @ localhost〜] $ ls -al

7)列出现有的xauth cookie

[oracle @ localhost〜] $ xauth列表
localhost.localdomain / unix:11个MIT-MAGIC-COOKIE-1 310f1b02c1080e73059391c193a1881b
本地主机.localdomain / unix:10 MIT-MAGIC-COOKIE-1 41843db100830a2aa352641ac47bb759

8)添加

[oracle @ localhost〜] $ xauth添加localhost.localdomain / unix:10 MIT-MAGIC-COOKIE-1 41843db100830a2aa352641ac47bb75

9)测试

[oracle @ localhost〜] $ xclock

希望他们能为您服务!@wcaraza


2
该部分XAUTH添加....是招

第3步和第4步对我
有用。– kiltek

6

确保SSH服务器已xauth安装该工具,并且您的~/.Xauthority文件可写。(不存在也可以,只要xauth可以创建它即可。)

检查xauth数据是否正在更新:

server$ xauth list

尝试手动添加虚拟xauth数据(再次在SSH服务器上),并查看是否xauth存在任何问题(例如,无法创建锁定文件或无法修改Xauthority文件本身):

server$ xauth add localhost:123 MIT-MAGIC-COOKIE-1 d7e2e4a8c5aa4430bfcc2abb436940d2

如有必要,请在下重新运行strace

通过LogLevel DEBUG2在服务器配置(/etc/ssh/sshd_config)中进行设置,或通过在调试模式下直接启动sshd,以调试模式运行SSH服务:

server$ sshd -rddp 12234

(在此示例中,12234是您需要连接到的临时SSH端口。任何空闲端口都可以。)


谢谢。服务器上的Xauth可以写入.Xauthority文件。但是应该设置什么呢?服务器= N40L,客户端= Lin001。N40L上的xauth列表是否应显示localhost:10 MIT-MAGIC-COOKIE-1 {Lin001'sHexKey}的条目?
wkdmarty 2014年

@wkdmarty:是的,您的sshd将在与显示:10(或:11,:12 ...)相对应的TCP端口上侦听,并且将显示为“ localhost:10”。至于十六进制密钥,我真的不知道它是否打算使用相同的密钥–我认为ssh实际上会生成一个新密钥,并充当代理...
user1686

好的,我可以看到0.0.0.0:6011在监听。我的DISPLAY变量的状态为N40L:11.0,我认为这是错误的,因此将其更改为DISPLAY = localhost:10.0。不,仍然会出错。我确实在SSH连接上注意到这一行:debug2:x11_get_proto / usr / bin / xauth list:0.0 2> / dev / null无论我在哪里看到SSH连接日志记录,此行都是不同的...显示密钥生成,从不:0.0。?
wkdmarty 2014年

@wkdmarty:通常sshd应该将$ DISPLAY设置为正确的值,并且端口6011确实对应于显示11,而不是10。
user1686'9

1
“我的DISPLAY变量状态为N40L:11.0 ...所以我将其更改”。直言不讳,请不要打扰DISPLAY。如果ssh设置了X11转发,它将把DISPLAY设置为一个有效的值。覆盖ssh设置的值只会使故障排除过程变得更加困难。
Kenster 2014年

3

它正在工作,正在工作。哈哈。

最后。

在发现它不是系统之后,通过添加测试用户(x转发可以“开箱即用”),我认为我将开始复制.bash *启动文件来对“破碎的”用户进行虚拟化。

这些文件没有什么不同,因此接下来我删除了用户.ssh目录。当我ssh进入时,它抱怨着“服务器拒绝了我们的密钥”,但是我可以使用密码登录。登录后,我可以完美转发。

现在,我将尝试再次设置密钥,看看是否也可以正常工作。然后它将恢复正常。


这也对我有用。我尝试了所有其他方法,但是,显然问题出在密钥上。
辅助

1

可能导致此问题的另一件事是~/.ssh/rc服务器(连接到的计算机)上存在文件。删除(或重命名)以解决问题。


1
Per man sshd,sshd ~/.ssh/rc代替xauth@PimpJuiceIT 运行。
肯·杰克逊

谢谢!有关更多详细信息,请参阅:docstore.mik.ua/orelly/networking_2ndEd/ssh/…。应该可以添加适当的命令来启动rc文件中的xauth,但是我没有找到它。
Matt

0

rm ~/.Xauth* 然后重新连接。

这对我有用。欲了解更多详情

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.