“ คำเตือน: การตั้งค่าการส่งต่อ X11 ที่ไม่น่าไว้วางใจล้มเหลวอย่างไร: ไม่มีการสร้างข้อมูลคีย์ xauth” หมายความว่าเมื่อ ssh'ing ด้วย -X


134

เมื่อฉันใช้ssh -Xบน Mac ของฉัน (ใช้ OS X 10.6.7) เพื่อเชื่อมต่อกับกล่อง Ubuntu (11.04) ของฉันฉันได้รับคำเตือนต่อไปนี้:

คำเตือน: การตั้งค่าการส่งต่อ X11 ที่ไม่น่าเชื่อถือล้มเหลว: ไม่มีการสร้างข้อมูลคีย์ xauth คำเตือน: ไม่มีข้อมูล xauth; ใช้ข้อมูลการตรวจสอบสิทธิ์ปลอมสำหรับการส่งต่อ X11

มีสิ่งที่ฉันสามารถทำได้เพื่อให้คำเตือนนี้หายไป? ถ้าไม่ฉันสามารถเพิกเฉยได้อย่างปลอดภัยหรือไม่

การส่งต่อ X11 ดูเหมือนจะทำงานได้ดี แต่ฉันเห็นข้อความนี้:

Xlib: ส่วนขยาย "RANDR" หายไปบนจอแสดงผล "localhost: 10.0"

เกี่ยวข้องกับคำเตือนหรือไม่? (ฉันคาดเดาไม่ได้ถ้าไม่ใช่ฉันจะยื่นคำถามใหม่เกี่ยวกับเรื่องนั้น)


1
ติดตั้งโปรแกรม xauth ไว้บนเซิร์ฟเวอร์ ubuntu หรือไม่
slubman

sudo apt-get install xauthบอกฉันว่า "xauth เป็นรุ่นใหม่ล่าสุดแล้ว"
Daryl Spitzer

เมื่อเข้าสู่ระบบบนเซิร์ฟเวอร์ ubuntu ผลลัพธ์ของ 'xauth ใด' คืออะไร
slubman

แน่นอนฉันคิดว่าคุณควรอ่านคำอธิบายนี้: mail-archive.com/cygwin-xfree@cygwin.com/msg17927.html …คุณสามารถละเว้นคำเตือนนี้ได้
slubman

2
บางครั้งสิ่งนี้อาจเกิดจากปัญหาที่มีไฟล์ ~ / .Xauthority ของคุณ หากคุณลบมันจะถูกสร้างขึ้นใหม่ในครั้งต่อไปที่คุณพยายามเข้าสู่ระบบ
ไมเคิล

คำตอบ:


145

เหตุผลใดที่คุณไม่ต้องการใช้แฟล็ก -Y แทนแฟล็ก -X

ค่อนข้างง่ายความแตกต่างระหว่าง -X และ -Y คือ -Y เปิดใช้งานการส่งต่อ X11 ที่เชื่อถือได้


4
ไม่ฉันไม่ทราบแฟล็ก -Y เมื่อฉันเขียนคำถาม ฉันเชื่อว่านั่นเป็นวิธีแก้ปัญหา เปลี่ยนคำตอบของคุณเพื่อให้ไม่ใช่คำถาม (และมันจะดีถ้าคุณอธิบายสั้น ๆ ความแตกต่างระหว่าง -Y และ -C) และฉันจะยอมรับมัน
Daryl Spitzer

มีกรณีใดบ้างที่คุณไม่ต้องการใช้ -Y แทน -X?
ไก่

@ Rooster สำหรับระบบเก่ามากที่ไม่สนับสนุน -Y ฉันจะบอกว่า
Petr

เคล็ดลับการแก้ไขปัญหา: เรียกใช้ "ssh -vv ... " และค้นหาบรรทัด xauth และข้อความแสดงข้อผิดพลาด คุณสามารถลองเรียกใช้บรรทัด xauth ที่แสดงขึ้นโดยตรง สำหรับฉันฉันต้องการให้มันเป็น "xauth list: 0" (เชื่อถือได้) ไม่ใช่ "xauth -f / tmp / ssh ... list: 0" (ไม่น่าเชื่อถือ) -Y ใดได้รับการแก้ไขและ "ForwardX11Trusted ใช่" ในรีโมตโฮสต์ / etc / ssh / ssh_config (หรือ ~ / .ssh / config) เช่นกัน
เคอร์ติส Yallop

วิธีนี้ยังทำงานร่วมกับ Cygwin / X
linux64kb

25

หากคุณมาที่นี่ในปี 2558: แม้ว่าจะมีการตั้งค่าอย่างอื่นทุกอย่างสิ่งนี้สามารถเกิดขึ้นได้ใน Mac OS X 10.10 โยเซมิตีเมื่อใช้ssh -Xและใช้งาน XQuartz เวอร์ชัน <= 2.7.7 สาเหตุหลักคือซ็อกเก็ตการแสดงผล X11 การเขียนนอกเส้นทางการค้นหา xauth: issue # 2068ในตัวติดตาม XQuartz

แก้ไข: XQuartz แบบคงที่นับตั้งแต่เปิดตัวที่โฮมเพจใหม่xquartz.orgและติดตั้งเวอร์ชันล่าสุดจากที่นั่น (ปัจจุบัน 2.7.9) จะสามารถแก้ไขปัญหาได้


1
ขอขอบคุณ! ฉันไม่รู้ว่า XQuartz ที่ฉันเพิ่งดาวน์โหลดมาจากด้านบนของหน้า XQuartz นั้นไม่ใช่รุ่นล่าสุด
craigds

เร็ว ๆbrew install xquartzนี้ที่ติดตั้งรุ่น 2.7.7 ล้าสมัยในปัจจุบัน
Martin Cleaver

brew install Caskroom/cask/xquartzควรรับ XQuartz ล่าสุดกับ HomeBrew
Nick

หรือสั้นกว่าbrew cask install xquartzนั้น
Franklin Yu

17

หากคุณได้รับข้อความเดิมแม้ว่าจะใช้-Yงานxauthโปรแกรมอาจหายไปบนเซิร์ฟเวอร์ บนระบบที่คล้ายกับ Debian คุณต้องมีxauthแพ็คเกจ บนระบบที่เหมือน RedHat คุณต้องมีxorg-x11-xauthแพ็คเกจ


15

"ไม่น่าเชื่อถือ" ในบริบทนี้หมายความว่าคุณไม่เชื่อถือการเชื่อมต่อ SSH จะใช้มาตรการรักษาความปลอดภัยเพิ่มเติมเพื่อพยายามทำให้การส่งต่อ X11 ปลอดภัยยิ่งขึ้น "เชื่อถือได้" หมายความว่าคุณมั่นใจอย่างเต็มที่ว่าจะไม่มีการเปิดบนโฮสต์ระยะไกลที่จะเข้าถึงข้อมูล Xauth ของคุณและใช้เพื่อตรวจสอบการกดแป้นพิมพ์ของคุณเช่น

คำศัพท์นี้ทำให้ฉันสับสนมาหลายปี ฉันคิดว่าการเชื่อมต่อ "เชื่อถือ" นั้นปลอดภัยกว่า แต่จริงๆแล้วมันเป็นตัวเลือกที่คุณควรใช้ในสถานการณ์ที่การเชื่อมต่อเชื่อถือได้และคุณต้องการรันสิ่งต่าง ๆ โดยไม่มีมาตรการรักษาความปลอดภัยเพิ่มเติมเข้ามา "ไม่น่าเชื่อถือ" เป็นสิ่งที่ทำให้ปลอดภัยกว่าที่จะจัดการกับโฮสต์ระยะไกลที่ไม่น่าเชื่อถือ

การเชื่อมต่อ "ไม่น่าเชื่อถือ" พยายามที่จะ จำกัด สิ่งที่หมวกสีดำสามารถทำได้สำหรับคุณโดยการเพิ่มความปลอดภัยให้กับ X11 และปิดการใช้งานส่วนขยายอื่น ๆ ที่คุณ (หวังว่า) ไม่ต้องการ นี่อาจเป็นสาเหตุที่ RandR ถูกปิดใช้งานด้วย -X คุณจำเป็นต้องหมุนจอแสดงผล X ของคุณจากโฮสต์ระยะไกลหรือไม่?

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


9

ฉันไม่มีการตั้งค่าที่สามารถแสดงพฤติกรรมนี้ดังนั้นนี่คือภาพในที่มืด:

คำเตือนอาจจะมีการปราบปรามถ้าคุณตั้งค่าForwardX11Trustedการ"no"สำหรับโฮสต์ที่ให้คำเตือนนี้ คุณสามารถวางสิ่งนี้ใน~/.ssh/configหรือหรือ/etc/ssh/ssh_configคุณสามารถเลือกตัวเลือกเฉพาะสำหรับโฮสต์โดยรวมHost <hostname>ในบรรทัดด้านบน <hostname>องค์ประกอบที่ตรงกับสิ่งที่คุณพิมพ์ในบรรทัดคำสั่ง (ไม่ได้รับการแก้ไขชื่อโฮสต์) และมันสามารถรวมสัญลักษณ์


สามารถใช้ssh -Yเพื่อทำการส่งต่อ X11 ที่เชื่อถือได้ แต่จะแก้ไขได้อย่างไร
Pavel Šimerda

ฉันได้รับข้อผิดพลาดเดียวกันใน Redhat และตอนนี้ฉันสามารถแก้ไขได้โดยแก้ไขไฟล์กำหนดค่า/etc/ssh/ssh_configที่ฝั่งไคลเอ็นต์ ขอบคุณ
Gangadhar Jannu

7

ระวัง (เบื่ออ่านคำตอบที่ไม่สมบูรณ์ซึ่งนำไปสู่ข้อบกพร่องด้านความปลอดภัย)

1 / การใช้ ssh -Y หมายถึงที่นี่มีข้อมูล xauth ปลอมซึ่งไม่ดี!

2 / ssh -X ควรทำงานตั้งแต่ XQuartz เมื่อเปิดใช้งานให้ใช้ xauth ปัญหาเดียวคือ ssh กำลังมองหา xauth ใน / usr / X11R6 / bin และใน macos ที่มี XQuartz อยู่ใน / opt / X11 / bin

การแก้ปัญหาที่ปลอดภัย:

1 / เปิดใช้งานตัวเลือกแรกในแท็บความปลอดภัยของการตั้งค่า (Cmd-,) ซึ่งเปิดใช้งานการเชื่อมต่อที่ผ่านการรับรองความถูกต้อง

2 / เพิ่ม

XAuthLocation /opt/X11/bin/xauth

ใน $ HOME / .ssh / config

3 / ssh -X you_serverทำงานใน maner ที่ปลอดภัย


6

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


6

ตัดปัญหาด้านเซิร์ฟเวอร์

ก่อนอื่นคุณควรแยกแยะปัญหาด้านเซิร์ฟเวอร์ใด ๆ คุณสามารถssh -Xจากโฮสต์อื่น ๆ ได้สำเร็จหรือไม่ ไม่ssh -Yทำงานในขณะที่ssh -Xไม่? ไม่ว่าในกรณีใดสมมติว่า ssh + X11 ตั้งค่าอย่างถูกต้องบนเซิร์ฟเวอร์ของคุณและไปยังส่วนถัดไป

หากคุณไม่ได้อยู่ในสถานะที่จะตรวจสอบว่า (คุณมี แต่แล็ปท็อปเครื่องหนึ่งที่ใช้ X11 พูด) คุณสามารถsshจากเซิร์ฟเวอร์หนึ่งไปยังอีกเซิร์ฟเวอร์หนึ่งโดยใช้เซสชันปลอม:

  1. export DISPLAY=:44# (บอร์นเชลล์) หรือ
    setenv DISPLAY :44# (csh / tcsh)
  2. xauth add $DISPLAY MIT-MAGIC-COOKIE-1 1234 # คุกกี้ปลอมเป็นการทดสอบนี้
  3. ssh -X localhost env |grep DISPLAY

ผลลัพธ์ที่ควรได้รับ: ควรมีตัวแปร DISPLAY ที่ตั้งค่าไว้ที่ปลายทางระยะไกลของเซสชัน ssh-to-self หากคุณไม่ได้รับผลลัพธ์แสดงว่าเซิร์ฟเวอร์ของคุณอาจมีการกำหนดค่าผิดพลาด (เช่นไลบรารี X11 และ / หรือxauthคำสั่งอาจหายไปหรือการกำหนดค่า sshd อาจตั้งค่าให้ปฏิเสธการเข้าถึง X11)

บน Mac: ตรวจสอบว่า Xquartz ทันสมัยแล้ว

ตามคำตอบของ Will Angley

ตรวจสอบssh -vv -Xผลลัพธ์

ข้อความแสดงข้อผิดพลาดที่คุณอ้างถึงเป็นอาการที่สามารถมีได้หลายสาเหตุ ลองอีกครั้งด้วยซึ่งควรให้ข้อมูลเพิ่มเติมแก่คุณว่าทำไมการตั้งค่า X11 tunnel จึงล้มเหลวssh -X -vv remotehost

คุณเห็นข้อความต่อไปนี้ปรากฏขึ้นหรือไม่

debug1: ไม่มีโปรแกรม xauth
ถ้าเป็นเช่นนั้น

  1. จดบันทึกตำแหน่งที่อยู่บนระบบไคลเอ็นต์ของคุณxauthคำสั่งจะอยู่:
    ซึ่ง xauth
  2. เพิ่มสิ่งต่อไปนี้ที่ส่วนท้ายสุดของ ~ / .ssh / config (และเพิ่มความคิดเห็นเพื่อเตือนตัวเองให้เก็บไว้ที่นั่นในอนาคต):
    โฮสต์ *
        XAuthLocation / opt / X11 / bin / xauth
    
    ปรับเส้นทางนี้ตามการค้นพบของขั้นตอนที่ 1 - มอบเครดิตให้กับ Jan-Willem Arnold

3

ดังที่อธิบายไว้ข้างต้นแล้วสิ่งต่อไปนี้ใช้ได้กับฉัน:

แก้ไข~ / .ssh / configเพื่อเพิ่มบรรทัด

Host *
    XAuthLocation /opt/X11/bin/xauth

และตอนนี้ใช้ชื่อโฮสต์ ssh -X (XQuartz 2.7.11, macOS 10.4 Mojave)


0

ฉันได้ติดตั้ง XQuartz 2.7.11 ล่าสุดแล้ว แต่ฉันคิดว่าฉันได้อัปเดตระบบปฏิบัติการหลายครั้งตั้งแต่นั้นมา ฉันติดตั้ง XQuartz 2.7.11 ใหม่และตอนนี้ก็ทำงานได้ดี


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