Xauth/X11 ssh 转发错误,.Xauthority 文件不可写

Xauth/X11 ssh 转发错误,.Xauthority 文件不可写

当我登录时ssh -Y remotehost收到以下错误消息:

/usr/bin/xauth:/home/hlovdal/.Xauthority 不可写,更改将被忽略

并且 xclock 和类似程序无法启动。尽管出现错误消息,但 .Xauthority 文件的权限没有任何问题。

(hlovdal) remotehost:~>xclock
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
Error: Can't open display: localhost:10.0
(hlovdal) remotehost:~>ls -l /home/hlovdal/.Xauthority
-rw-------. 1 hlovdal hlovdal 70 Jul 25 23:30 /home/hlovdal/.Xauthority
(hlovdal) remotehost:~>

这可能是什么原因呢?

(这是我的两台笔记本电脑之间发出的嘘声,之前我已经来回发出了数百次嘘声。)


更新:

在进一步调试时,xauth 再次抱怨它无法写入 .Xauthority,这没有意义,因为该文件可由我的用户写入,出于好奇,我运行了 strace 来查看它到底试图做什么。

(hlovdal) remotehost:~>xauth list
xauth:  /home/hlovdal/.Xauthority not writable, changes will be ignored
(hlovdal) remotehost:~>strace -oout -f -s9000 xauth list
xauth:  error in locking authority file /home/hlovdal/.Xauthority
(hlovdal) remotehost:~>tail out
16634 brk(0xf03000)                     = 0xf03000
16634 brk(0)                            = 0xf03000
16634 rt_sigaction(SIGINT, {0x4050d0, [INT], SA_RESTORER|SA_RESTART, 0x3957035350}, {SIG_DFL, [], 0}, 8) = 0
16634 rt_sigaction(SIGTERM, {0x4050d0, [TERM], SA_RESTORER|SA_RESTART, 0x3957035350}, {SIG_DFL, [], 0}, 8) = 0
16634 rt_sigaction(SIGHUP, {0x4050d0, [HUP], SA_RESTORER|SA_RESTART, 0x3957035350}, {SIG_DFL, [], 0}, 8) = 0
16634 rt_sigaction(SIGPIPE, {0x4050d0, [PIPE], SA_RESTORER|SA_RESTART, 0x3957035350}, {SIG_DFL, [], 0}, 8) = 0
16634 stat("/home/hlovdal/.Xauthority-c", {st_mode=S_IFREG|0600, st_size=0, ...}) = 0
16634 open("/home/hlovdal/.Xauthority-c", O_WRONLY|O_CREAT|O_EXCL, 0600) = -1 EEXIST (File exists)
16634 write(2, "xauth:  error in locking authority file /home/hlovdal/.Xauthority\n", 66) = 66
16634 exit_group(1)                     = ?
(hlovdal) remotehost:~>ls -l .Xauthority*
-rw-------. 1 hlovdal hlovdal 70 Jul 25 23:30 .Xauthority
-rw-------. 2 hlovdal hlovdal  0 Jul 26 01:26 .Xauthority-c
-rw-------. 2 hlovdal hlovdal  0 Jul 26 01:26 .Xauthority-l
(hlovdal) remotehost:~>

这更好地解释了为什么 xauth 会失败,因为它无法创建 .Xauthority-c。但删除这两个可能过时的文件并没有帮助,它们会在下次 ssh 登录时重新创建。remotehost 中的 syslog 包含与 ssh 登录相关的以下内容。

sshd[17551]: Accepted publickey for hlovdal from x.x.x.x port 36545 ssh2
sshd[17552]: fatal: mm_request_receive: read: Connection reset by peer
sshd[17551]: pam_unix(sshd:session): session opened for user hlovdal by (uid=0)

这个 mm_request_receive 错误消息以前从未出现过,所以我猜测这是进一步调试的线索。

答案1

在 Ubuntu 12.04 上同步我的主文件夹后,我遇到了同样的问题。我使用以下命令解决了该问题:

rm ~/.Xaut* 

然后我注销并重新登录。出现以下警告:

/usr/bin/xauth:  file /home/iranice/.Xauthority does not exist

之后,Linux.Xauthority自动创建了文件。我注销并重新登录,一切正常。

答案2

对我来说,我遇到了这个错误:

/usr/bin/xauth: error in locking authority file /home/toto/.Xauthority

因为我的 /home 分区已满。

释放该分区上的一些空间可以解决此问题。

strace 命令:strace -oout -f -s9000 xauth list对于识别问题很有用。

答案3

这似乎是一个已知的问题,报告于Redhat 的 Bugzilla,所以我将“关闭”这个问题并继续报告该错误报告。

答案4

对我来说,问题在于权限问题。即使你删除了文件.Xauthority,它也会重新创建并且不可写入。所以我更改了所有者,然后就好了:

sudo chown user:user .Xauthority

该文件可能是默认为 root 创建的。

相关内容