X11

為什麼我從 xauth 收到此消息:“鎖定授權文件 /home/<user>/.Xauthority 超時”?

  • May 14, 2020

在嘗試通過 SSH 連接到主機時,我收到了以下消息xauth

/usr/bin/xauth: 鎖定授權文件 /home/sam/.Xauthority 超時

**注意:**我試圖通過 SSH 連接遠端顯示 X11 GUI,因此我需要xauth能夠$HOME/.Xauthority成功創建文件,但正如該消息所表明的那樣,顯然不是。

嘗試執行任何基於 X11 的應用程序,例如xeyes收到此消息:

$ xeyes
X11 connection rejected because of wrong authentication.
Error: Can't open display: localhost:10.0

我該如何解決這個問題?

strace在失敗的遠端系統上執行xauth將顯示發生了什麼問題xauth

例如

$ strace xauth list
stat("/home/sam/.Xauthority-c", {st_mode=S_IFREG|0600, st_size=0, ...}) = 0
open("/home/sam/.Xauthority-c", O_WRONLY|O_CREAT|O_EXCL, 0600) = -1 EEXIST (File exists)
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({2, 0}, 0x7fff6c4430e0)       = 0
open("/home/sam/.Xauthority-c", O_WRONLY|O_CREAT|O_EXCL, 0600) = -1 EEXIST (File exists)
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({2, 0}, 0x7fff6c4430e0)       = 0
open("/home/sam/.Xauthority-c", O_WRONLY|O_CREAT|O_EXCL, 0600) = -1 EEXIST (File exists)
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0

因此xauth試圖打開一個文件並且它已經存在。罪魁禍首文件是/home/sam/.Xauthority-c. 我們可以確認遠端系統上是否存在此文件:

$ ls -l .Xauthority*
-rw------- 1 sam sam 55 Jul 12 22:04 .Xauthority
-rw------- 1 sam sam  0 Jul 12 22:36 .Xauthority-c
-rw------- 1 sam sam  0 Jul 12 22:36 .Xauthority-l

修復

事實證明。這些文件是 的鎖定文件.Xauthority,因此只需刪除它們即可解決問題。

$ rm -fr .Xauthority-*

刪除文件後,退出 SSH 連接,然後重新連接。這將允許xauth重新執行成功。

$ ssh -t skinner ssh sam@blackbird
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-44-generic x86_64)

* Documentation:  https://help.ubuntu.com/

Last login: Sun Jul 12 22:37:54 2015 from skinner.bubba.net
$

現在我們能夠xauth list毫無問題地執行 X11 應用程序。

$ xauth list
blackbird/unix:10  MIT-MAGIC-COOKIE-1  cf01f793d2a5ece0ea58196ab5a7977a

圖形使用者界面

$ xeyes

                                              SS#1

解決問題的替代方法

我遇到了這篇標題為:xauth:鎖定授權文件.Xauthority 中的錯誤$$ linux, ssh, X11 $$其中提到了使用xauth -b打破任何可能掛起的鎖定文件。xauth的手冊頁似乎支持這一點:

-b      This option indicates that xauth should attempt to break any
        authority file locks before proceeding.  Use this option only to
        clean up stale locks.

參考

引用自:https://unix.stackexchange.com/questions/215558