ฉันจะดีบัก“ การเชื่อมต่อ X11 ถูกปฏิเสธเนื่องจากการตรวจสอบที่ไม่ถูกต้อง”


10

ฉันมีปัญหากับการส่งต่อ X ผ่าน SSH ฉันต่อสู้มานานแล้ว แต่ดูเหมือนว่าไม่มีใครสามารถช่วยได้

ตอนนี้ฉันกำลังใช้ไหวพริบที่แตกต่างกัน ฉันต้องการทราบวิธีแก้ไขข้อผิดพลาดหรือไม่

ฉันควรดูบันทึกอะไรฉันควรตั้งค่าสถานะใดเป็นพิเศษ (-v ฯลฯ ) และฉันควรค้นหาอะไร

แก้ไขเพิ่มเติม:

ถ้าฉันเข้าสู่ Putty เข้าสู่เซิร์ฟเวอร์และลองxeyesฉันจะได้รับ:

PuTTY X11 proxy: พยายามอนุญาตโพรโทคอลผิดพลาดข้อผิดพลาด: ไม่สามารถเปิดการแสดง: localhost: 10.0

ถ้าxauth generate $DISPLAYฉันได้รับ:

PuTTY X11 proxy: พยายามอนุญาตโพรโทคอลผิดพลาด xauth: (argv): 1: ไม่สามารถเปิดการแสดง "localhost: 10.0"


ในคำถามของคุณเมื่อวันก่อนคุณอธิบายอาการต่าง ๆ คุณยังคงทุกข์ทรมานจาก "ไม่สามารถเปิดจอแสดงผล" หรือคุณแก้ปัญหานั้นหรือไม่? หากคุณแก้ไขแล้วและหนึ่งในคำตอบของคำถามนั้นมีประโยชน์คุณควรเลือกเป็นคำตอบเพื่อให้รางวัลแก่คนที่ช่วยคุณ
Kenster

เห็นด้วยเป็นข้อผิดพลาดที่แตกต่างกันในตอนนี้ฉันได้ปิดคำถามนั้นไปแล้ว
wkdmarty

ดูว่าคำตอบนี้ใช้กับเซิร์ฟเวอร์ของคุณ
Kenster

Kenster ฉันไม่มีไฟล์ rc อยู่บนเซิร์ฟเวอร์ดังนั้นฉันจึงสร้างและวางรหัส ไม่แตกต่าง.
wkdmarty

ในบันทึก PuTTY สิ่งนี้เกิดขึ้นหลังจากฉันพยายามเรียกใช้โปรแกรม x (หลังจากเข้าสู่ระบบ SSH) 2014-09-01 15:16:38 ได้รับคำขอเชื่อมต่อ X11 จาก 127.0.0.1,59566 2014-09-01 15:16:38 การเปิดการเชื่อมต่อ X11 ไปข้างหน้าสำเร็จแล้ว 2014-09-01 15:16:38 ไม่มีอะไรเหลือให้ส่ง ปิดช่องทาง 2014-09-01 15:16:38 การเชื่อมต่อ X11 ถูกส่งต่อถูกยกเลิก
wkdmarty

คำตอบ:


13

โซลูชันของฉันทีละขั้นตอน:

1) การเข้าสู่ระบบด้วยตัวเลือก -X โฮสต์รากเข้าสู่ระบบระยะไกล

$ 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 'หรือไม่ Y

4) ตั้งค่าการอนุญาตสำหรับไฟล์นี้

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

5) ผู้ใช้ oracle เข้าสู่ระบบ

[root @ localhost ~] # su - oracle

6) การตั้งค่าการแสดงผลใน localhost: 10.0

[oracle @ localhost ~] $ echo $ DISPLAY
localhost: 10.0
[oracle @ localhost ~] $ ls -al

7) แสดงรายการคุกกี้ xauth ที่มีอยู่

[oracle @ localhost ~] รายการ $ xauth
localhost.localdomain / unix: 11 MIT-MAGIC-COOKIE-1 310f1b02c1080e73059391c193a1881b
localhost.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 เพิ่ม .... คือกลอุบาย
Wei

ขั้นตอนที่ 3 และ 4 ได้หลอกลวงให้ฉัน
kiltek

6

ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ SSH xauthติดตั้งเครื่องมือแล้วและ~/.Xauthorityไฟล์ของคุณสามารถเขียนได้ (ไม่มีอยู่จริงก็โอเคตราบใดที่xauthสามารถสร้างได้)

ตรวจสอบว่ามีการอัพเดทข้อมูล xauth หรือไม่:

server$ xauth list

ลองเพิ่มข้อมูล dummy xauth ด้วยตนเอง (อีกครั้งบนเซิร์ฟเวอร์ SSH) และดูว่าxauthมีปัญหาใด ๆ หรือไม่ (เช่นไม่สามารถสร้างล็อคไฟล์หรือแก้ไขไฟล์ Xauthority เอง):

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

straceหากจำเป็นต้องอยู่ภายใต้การ re-run

เรียกใช้บริการ SSH ในโหมดดีบักโดยการตั้งค่าLogLevel DEBUG2ในการกำหนดค่าเซิร์ฟเวอร์ ( /etc/ssh/sshd_config) หรือโดยเริ่มต้น sshd ในโหมดดีบักโดยตรง:

server$ sshd -rddp 12234

(ในตัวอย่างนี้12234คือพอร์ต SSH ชั่วคราวที่คุณต้องเชื่อมต่อด้วยพอร์ตว่างใด ๆ จะทำ)


ขอบคุณ. Xauth บนเซิร์ฟเวอร์สามารถเขียนไปยังไฟล์. Xauthority แต่มันควรจะตั้งอะไร เซิร์ฟเวอร์ = N40L ลูกค้า = Lin001 รายการ xauth ใน N40L ควรแสดงรายการสำหรับโฮสต์ในพื้นที่: 10 MIT-MAGIC-COOKIE-1 {Lin001'sHexKey} หรือไม่
wkdmarty

@wkdmarty: ใช่ sshd ของคุณจะฟังบนพอร์ต TCP ที่สอดคล้องกับจอแสดงผล: 10 (หรือ: 11,: 12 ... ) และสิ่งนี้จะปรากฏเป็น "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 รายการ: 0.0 2> / dev / null ทุกที่ที่ฉันเห็นบันทึกการเชื่อมต่อ SSH บรรทัดนี้จะแตกต่างกัน ... แสดงการสร้างที่สำคัญไม่เคย : 0.0.
wkdmarty

@wkdmarty: โดยปกติ sshd ควรตั้ง $ DISPLAY เป็นค่าที่ถูกต้อง ... และพอร์ต 6011 นั้นสอดคล้องกับการแสดง 11 ไม่ใช่ 10 อย่างไรก็ตาม
user1686

1
"ตัวแปร DISPLAY ของฉันระบุว่า N40L: 11.0 ... ดังนั้นฉันจะเปลี่ยนสิ่งนั้น" หากต้องการทื่อให้ปล่อยให้ DISPLAY อยู่คนเดียว หาก ssh ตั้งค่าการส่งต่อ X11 จะเป็นการตั้งค่า DISPLAY ให้เป็นค่าที่ใช้งานได้ การเอาชนะค่าที่ ssh ตั้งไว้จะทำให้กระบวนการแก้ไขปัญหายากขึ้น
Kenster

3

มันใช้งานได้ผล ฮ่าฮ่า

ในที่สุด

หลังจากพบว่ามันไม่ใช่ระบบโดยการเพิ่มผู้ใช้ทดสอบ (ซึ่งการส่งต่อ x ทำงานได้ "นอกกรอบ") ฉันคิดว่าฉันเริ่มคัดลอกไฟล์. bash * startup ไปยังผู้ใช้ที่ "เสีย"

ไม่มีไฟล์ที่แตกต่างกันดังนั้นต่อไปฉันลบไดเรกทอรีผู้ใช้. ssh เมื่อฉันเข้าไปมันก็ร้องคร่ำครวญเกี่ยวกับ "เซิร์ฟเวอร์ปฏิเสธกุญแจของเรา" แต่ฉันสามารถเข้าสู่ระบบโดยใช้รหัสผ่าน เมื่อเข้าสู่ระบบแล้วฉันสามารถส่งต่อได้อย่างสมบูรณ์แบบ

ตอนนี้ฉันจะพยายามตั้งค่าคีย์อีกครั้งและดูว่าฉันสามารถใช้งานได้หรือไม่ จากนั้นมันจะกลับมาเป็นปกติ


มันก็ใช้ได้กับฉันเช่นกัน ฉันลองใช้วิธีการอื่น ๆ ทั้งหมด แต่เห็นได้ชัดว่าใช่ปัญหาอยู่ในปุ่ม
ผู้ช่วย

1

อีกสิ่งหนึ่งที่ทำให้เกิดปัญหานี้คือการมี~/.ssh/rcไฟล์อยู่บนเซิร์ฟเวอร์ - เครื่องที่คุณกำลังเชื่อมต่อ ลบ (หรือเปลี่ยนชื่อ) เพื่อแก้ไขปัญหา


1
ต่อman sshdsshd ทำงาน~/.ssh/rcแทนxauth@PimpJuiceIT
Ken Jackson

ขอบคุณ! สำหรับรายละเอียดเพิ่มเติมโปรดดูที่: docstore.mik.ua/orelly/networking_2ndEd/ssh/... เป็นไปได้ที่จะเพิ่มคำสั่งที่เหมาะสมเพื่อเริ่ม xauth ภายในไฟล์ rc แต่ฉันไม่พบมัน
Matt B.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.