ทำงาน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
GUI
$ 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.
อ้างอิง