X11
為什麼我從 xauth 收到此消息:“鎖定授權文件 /home/<user>/.Xauthority 超時”?
在嘗試通過 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
解決問題的替代方法
我遇到了這篇標題為: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.
參考