ทำความเข้าใจกับตัวแปรสภาพแวดล้อม X Windows DISPLAY เมื่อทำการขุด


9

ฉันต้องการ ssh ไปยังเซิร์ฟเวอร์ระยะไกลทั้งสองทำงานCentOSโดยX11Forwardingเปิดใช้งาน

อย่างไรก็ตามแอปพลิเคชัน X ไม่สามารถทำงานได้อย่างถูกต้องกับหนึ่งในนั้น - ในโฮสต์ B มันทำงานได้ดี แต่ในโฮสต์ AI ได้รับข้อผิดพลาด "ไม่สามารถเชื่อมต่อกับจอแสดงผล" ได้ทุกครั้งที่ฉันเปิดแอปพลิเคชัน X

หลังจากการตรวจสอบDISPLAYตัวแปรสภาพแวดล้อมบนโฮสต์ซึ่งผมคิดว่ามีความเกี่ยวข้องกับหน้าต่าง X localhost:10.0ผมพบความคุ้มค่า ทำตามคำแนะนำที่นี่ฉันเปลี่ยนDISPLAY=0:10.0และใช้งานได้ อย่างไรก็ตามDISPLAYในโฮสต์ B ยังคงlocalhost:10.0ทำงานได้ดี

คำถามของฉันคืออะไรคุณค่าในการDISPLAYเป็นตัวแทน? ความแตกต่างระหว่างlocalhost:10.0และ0:10.0คืออะไร?

ว่ากันว่าlocalhostระบุชื่อโฮสต์ จากนั้นโฮสต์ใดที่จะระบุเซิร์ฟเวอร์ (โฮสต์ A / B) ที่แอปพลิเคชัน X ของฉันทำงานอยู่หรือไคลเอนต์ในพื้นที่ที่ฉันต้องการให้หน้าต่าง X แสดง

คำแนะนำหรือตัวชี้ไปยังเอกสารจะได้รับการชื่นชม

คำตอบ:


5

ส่วนหนึ่งของคำตอบสามารถพบได้ที่นี่จริง: https://stackoverflow.com/questions/746119/how-do-you-use-display-specifications

DISPLAY ตัวแปรนั้นเป็น 3 องค์ประกอบ:

<host>:<display>[.<screen>]

เท่าที่ localhost aka 127.0.0.1 เทียบกับ 0.0.0.0 aka 0 เป็นห่วงคุณสามารถดูโพสต์นี้:

https://serverfault.com/questions/78048/whats-the-difference-between-ip-address-0-0-0-0-and-127-0-0-1

ซึ่งอธิบายความแตกต่าง

ในกรณีของคุณโดยเฉพาะ 0.0.0.0:10.0 และ localhost: 10.0 จะมีผลเหมือนกัน แต่โดยทั่วไปหมายถึง:

  1. เชื่อมต่อบนส่วนต่อประสานใด ๆ ที่มีการตั้งค่าจอแสดงผล 10
  2. เชื่อมต่อกับ lo0 กับผู้ฟังของจอแสดงผล 10

แทบจะไม่มีความแตกต่างตั้งแต่ในกรณีแรกการสแกนอินเทอร์เฟซทั้งหมดจะเริ่มต้นด้วย lo0 ซึ่งโดยปกติจะเป็นอินเตอร์เฟสแรกในรายการ


ขอบคุณตอนแรก ฉันพบว่าปัญหาจริงทำตามเคล็ดลับของคุณ ปัญหาที่แท้จริงคือการที่localhostจะ binded 192.168.1.200(บาง IP ที่เฉพาะเจาะจงเช่นนั้น. ฉันไม่ต้องการที่จะเปิดเผยการกำหนดค่าที่แท้จริงของฉัน.) DISPLAY=127.0.0.1:10.0ในพื้นที่กนอกจากนี้ยังทำงานเมื่อการส่งออก การส่งต่อ X ใช้งานได้กับส่วนต่อประสานย้อนกลับเท่านั้นหรือไม่
Summer_More_More_Tea

localhostเป็นชื่อพิเศษที่ผูกกับอินเตอร์เฟสลูปแบ็ค (lo0) บน Linux ไม่ควรผูกกับที่อยู่ IP จริง คุณสามารถตรวจสอบการเชื่อมโดยการใช้sudo netstat -apn | grep 6010SSH ของคุณควรจะฟังพอร์ตนั้นสำหรับการเชื่อมต่อจอแสดงผล เท่าที่ฉันสามารถบอกได้127.0.0.1เพียง
Karlson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.