สีโป๊ว> Cygwin X11 การส่งต่อข้อผิดพลาด“ ไม่สามารถเปิดจอแสดงผล”


11

ฉันใช้ Putty บนเครื่อง Windows เพื่อ ssh ไปยังเซิร์ฟเวอร์อื่น เมื่อถึงตอนนั้นฉันกำลังพยายามใช้การส่งต่อ X11 เพื่อป๊อปหน้าต่างไปยังคอมพิวเตอร์ของฉัน ระบบระยะไกลไม่ใช่ปัญหาเนื่องจากเป็นระบบที่มีขนาดใหญ่ซึ่งผู้ใช้รายอื่น ๆ ใช้ในลักษณะเดียวกันนี้ได้สำเร็จ

ฉันเข้าสู่ระบบผ่านทาง Putty โดยไม่มีปัญหาแล้วทำงานstartxwinใน cygwin อย่างไรก็ตามเมื่อทำงานxtermใน Putty ฉันได้รับข้อผิดพลาดxterm Xt error: Can't open display: localhost:##.0ที่เครื่องหมาย pound เป็นจำนวนเต็มสองค่าซึ่งมีการเปลี่ยนแปลงค่าทุกครั้งที่ฉันเข้าสู่ระบบ

  • ฉันเปิดใช้งานการส่งต่อ X11 ในการตั้งค่า Putty
  • ฉันลองตั้งค่า "ตำแหน่งแสดง X" เป็น localhost:0
  • ฉันมั่นใจที่จะดาวน์โหลดแพ็คเกจ X11 สำหรับ cygwin
  • ฉันลองใช้startxแทนstartxwin
  • ฉันได้ลองsetenv DISPLAY localhost:0แล้วsetenv DISPLAY my.ip.address

น่าเสียดายที่ปัญหายังคงมีอยู่ ฉันใช้แหล่งข้อมูล Google ของฉันหมดแล้วในหัวข้อนี้และฉันจะขอขอบคุณสำหรับความช่วยเหลือ ขอบคุณ!


localhost:##.0คุณเห็นตัวเลขจริงที่นี่อะไร คุณใช้ซอฟต์แวร์ X ประเภทใดในคอมพิวเตอร์ Windows
Kenster

คำตอบ:


11

การอัพเดต Cygwin ล่าสุดได้เปลี่ยนเซิร์ฟเวอร์ X ให้ไม่รับฟังการเชื่อมต่อ TCP ตามค่าเริ่มต้น ในทางกลับกัน X ของ Cygwin ใช้ (การติดตั้ง Cygwin) ซ็อกเก็ตโดเมน Unix และ PuTTY (เป็นโปรแกรม Windows ดั้งเดิม) ไม่รู้วิธีใช้สิ่งเหล่านี้

Cygwin X คำถามที่พบบ่อยและCygwin ทาง รายการมีรายละเอียดเพิ่มเติม

ทางออกของฉันคือใช้ทางลัด Cygwin มาตรฐานที่ใช้startxwinเพื่อเปิดตัว X:

C:\cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/startxwin"

และแทนที่ด้วยการร้องขอโดยตรงของ xinit ด้วยตัวเลือกที่ฉันต้องการ (เพิ่ม-listen tcpและลบ-auth):

C:\cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/xinit /etc/X11/xinit/startxwinrc -- /usr/bin/XWin :0 -multiwindow -listen tcp"

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


สถานที่ทำงานนี้ ใน cygwin terminal / PS / CMD
สีเหลืองและสีแดง

1
@ yellowandred มันเริ่มต้นด้วย `C: 'ดังนั้นมันจึงเป็นเส้นทางแบบ Windows ไม่ใช่เทอร์มินัล Cygwin ฉันเพิ่งวางไว้ในส่วนเป้าหมายของทางลัด Windows ของฉัน CMD ควรทำงาน PowerShell ควรใช้งานได้ แต่คุณอาจต้องอัพเดทข้อความ
Josh Kelley

6

เป็นทางเลือกแทนสิ่งที่ Josh Kelley กล่าวคุณสามารถแก้ไขไฟล์ startxwin และเพิ่ม "-listen tcp" ให้กับอาร์กิวเมนต์เซิร์ฟเวอร์เริ่มต้น

เก่า: defaultserverargs = "- multiwindow"

ใหม่: defaultserverargs = "- multiwindow -listen tcp"

นอกจากนี้เมื่อเปิดใช้งานการรับรองความถูกต้องฉันต้องชี้ putty ไปยังไฟล์การรับรองความถูกต้องที่สร้างขึ้นโดยสคริปต์ startxwin ของฉันตั้งอยู่ที่นี่: c: \ cygwin64 \ home \ USERNAME.Xauthority

เนื่องจากไฟล์นี้ถูกสร้างขึ้นใหม่คุณจะต้องเริ่มเซสชัน putty ใหม่หลังจากที่คุณรีเซ็ต xserver ของคุณ

เพื่อความปลอดภัยคุณอาจอนุญาตการเชื่อมต่อจาก localhost เท่านั้นเนื่องจากเป็นสิ่งที่ฉาบส่งต่อผ่าน


4

ฉันพยายามตั้งค่า "ตำแหน่งที่แสดง X" เป็น localhost: 0

โปรดลองตั้ง "X display location" เป็น ': 0.0' แทน!

export DISPLAY=:0.0

Josh Kelleyพูดถึงคำถามที่พบบ่อยของCygwin X :

3.13 ฉันอัปเกรดแล้วและตอนนี้ลูกค้า X ไม่สามารถเชื่อมต่อได้

A1:

ตั้งแต่ X server 1.17 ตามค่าเริ่มต้นเซิร์ฟเวอร์จะไม่รับฟังการเชื่อมต่อ TCP / IP ยอมรับเฉพาะการเชื่อมต่อโลคัลบนซ็อกเก็ตโดเมน unix

สำหรับลูกค้าในพื้นที่ให้ใช้ DISPLAY =: 0.0 แทนที่จะเป็น DISPLAY = localhost: 0.0, DISPLAY = 127.0.0.1: 0.0, DISPLAY = :: 1: 0.0 และอื่น ๆ



0

ดังที่คนอื่น ๆ ได้กล่าวเอาไว้เคล็ดลับคือการเพิ่ม-listen tcpการโต้เถียงของเซิร์ฟเวอร์ อย่างไรก็ตามฉันขอแนะนำให้ทำสิ่งนี้โดยการเรียกstartxwin -- -listen tcpเพื่อให้startxwinสร้างxinitคำสั่งที่เหลือ

ในทางลัดเมนูเริ่ม:

C:\cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/startxwin -- -listen tcp"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.