ด้วยการส่งต่อ SSH X11 (`ssh -X`) รับ` ไม่สามารถเปิดหน้าจอ 'พยายามเรียกใช้แอปพลิเคชัน X


22

ฉันสามารถเข้าสู่ระบบเพื่อตัดการใช้

ssh -X Hostip

แต่เมื่อฉันรันคำสั่ง xclock มันทำให้ฉันมีข้อผิดพลาดนี้

Error: Can't open display: localhost:11.0

ฉันตรวจสอบค่าการแสดงผลของฉันโดยใช้

echo $DISPLAY

และผลลัพธ์คือ

localhost:11.0

และการส่งต่อ X11 ถูกตั้งค่าเป็น YES ในไฟล์ sshd_config

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

คำแนะนำอะไรที่ฉันหายไปที่นี่?


3
คุณได้ลอง-Yแทน-X?
Flup

2
นอกจากนี้ยังให้แน่ใจว่าคุณเข้าใจความหมายของการใช้แทน-Y นอกจากนี้คุณยังอาจต้องการที่จะดู-X xhost
CVn

1
สำหรับ RedHat / CentOS 7 (อย่างน้อย) คุณต้องมีแพ็คเกจ xorg-x11-xauth ตามคำตอบของฉันที่นี่: unix.stackexchange.com/questions/138936/…
Mike S

คำตอบ:


18

-Yใช้ จากหน้าคนบน ssh:

-Y เปิดใช้งานการส่งต่อ X11 ที่เชื่อถือได้ การส่งต่อ X11 ที่เชื่อถือได้จะไม่ถูกควบคุมโดยส่วนขยาย X11 SECURITY

หากคุณยังคงประสบปัญหาคุณสามารถลองตั้งค่า$DISPLAYเป็น IP ของกล่องโลคอล :

$ export DISPLAY='<ip_address>:11.0'

มันอาจจะทำงานเพื่อตั้งเป็น

$ export DISPLAY='127.0.0.1:11.0'

คนดูเหมือนจะมีปัญหานี้บ่อยเมื่อssh'ing จาก Mac OS X คุณอาจต้องการตั้งค่า

X11UseLocalhost no

ในกรณีนี้เช่นกัน


1
การใช้ XQuartz ฉันไม่สามารถใช้แฟล็ก -Y "การเชื่อมต่อ X11 ถูกปฏิเสธเนื่องจากการตรวจสอบไม่ถูกต้อง"
Erik

5
แม้หลังจากลองใช้คำแนะนำอื่น ๆ ของคุณฉันก็ไม่สามารถเปิดหน้าจอได้
Erik

2
ทั้งสองอย่างนี้ก็ใช้ได้สำหรับฉันเช่นกัน ฉันต้องการติดตั้งการสนับสนุน XWindow ในเซิร์ฟเวอร์ Centos 7 ของฉัน (ขั้นต่ำ) ด้วย: yum groupinstall "X Window System" -y
Mark Edington

@MarkEdington นี้เป็นเพราะ RedHat / CentOS ต้องใช้แพคเกจ xorg-x11-xauth เป็นต่อคำตอบของฉันที่นี่: unix.stackexchange.com/questions/138936/...
ไมค์ S

6

สิ่งนี้ใช้ได้กับฉัน:

เปลี่ยนแปลง

X11UseLocalhost yes

ถึง

X11UseLocalhost no

ขอบคุณดอน ที่ทำงานให้ฉันด้วย ฉันให้คุณ upvote ฉันเชื่อว่าปัญหาที่รบกวนการใช้งานเริ่มต้นคือเครื่องเฉพาะเปิดใช้งาน xhost
LD James

6
กับแขกเหรอ? โฮสต์? ไฟล์การกำหนดค่าใด ขอบคุณเพื่อให้คำตอบของคุณเสร็จสมบูรณ์
Philippe Gachoud

ฉันทำให้มันใช้งานได้โดยวางการตั้งค่า/etc/ssh/sshd_configไว้ที่
llinfeng

6

ให้เครดิตกับ/unix//a/12772/61349สำหรับคำแนะนำในการวินิจฉัย

ให้แน่ใจว่าคุณเป็นลูกค้า ssh กำลังร้องขอ X11 การส่งต่อด้วยแฟล็ก -v

ssh example.com -X -v

และค้นหาข้อความเฉพาะ:

debug1: Requesting X11 forwarding with authentication spoofing.

อีกปัญหาหนึ่งของเครื่องหมายหางยาวคือการDISPLAYตั้งค่าตัวแปรสภาพแวดล้อมให้คุณ ถ้ามันว่างเปล่า / unset มีบางอย่างผิดปกติ อย่างน้อยตามโพสต์เดียวกันที่ให้เครดิตด้านบนตัวแปรเหล่านี้จะถูกตั้งค่าให้คุณโดยอัตโนมัติ


ฉันใช้ SSH Control Master การเชื่อมต่อ SSH ของฉันเป็นเช่นนั้น:

Host <hostname>
    ControlMaster auto
    ControlPath ~/.ssh/control/%r@%h:%p
    ControlPersist 10m

การเชื่อมต่อ ssh ก่อนหน้าของฉันไม่ได้ร้องขอ X11Firwarding ดังนั้นจึงsshไม่ได้ใช้ตัวเลือกการโทรในอนาคต ดังนั้นสำหรับฉัน

ssh -Xเพิ่งถูกเพิกเฉยไปเลย

หากคุณไม่เห็น "การร้องขอการส่งต่อ X11" แต่คุณจะเห็นเซสชันการใช้ muxer ซ้ำ

debug1: auto-mux: Trying existing master
debug1: mux_client_request_session: master session id: 10

จากนั้นคุณต้องออกจาก ControlMaster ปัจจุบันของคุณสำหรับการเชื่อมต่อนั้นและเชื่อมต่อใหม่ด้วยแฟล็ก -X / -Y

เพื่อหยุด ControlMaster ของคุณ

ssh -O check <hostname>

Master running (pid=2758)

(สิ่งนี้จะออกจากการเชื่อมต่อที่ใช้งานอยู่ทั้งหมดโดยใช้ ControlMaster)

ssh -O exit <hostname>

Exit request sent.

3

เมื่อพยายามส่งต่อไปยัง XQuartz บน macOS ฉันแก้ไขปัญหาโดยการเรียกใช้sshคำสั่ง ( ssh -Yในกรณีของฉัน) จากเทอร์มินัล XQuartz (เปิดโดยคลิกขวาที่ไอคอน XQuartz ใน Dock และคลิก Applications> Terminal)


นี้ทำงานให้ฉัน
dli

3

สิ่งที่แก้ไขให้ฉันนี้ก็แค่ติดตั้ง xauth เมื่อทำเสร็จมันก็ใช้งานได้อย่างมีเสน่ห์!

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