กลับไปสู่เซสชัน X11 ที่หายไป


27

ฉันใช้การส่งต่อ X11 sshเพื่อเรียกใช้แอพ Linux ในกล่อง Windows ของฉันและเมื่อเครือข่ายลดลงแอปจะสูญเสียทุกอย่างที่กำลังทำงานอยู่ มีอะไรคล้ายกับscreenX11 บ้างไหม?


อธิบาย ทำไมไม่ใช้เพียงscreen? หรือXVNC? คุณรันหน้าจอบนเครื่อง Linux และเมื่อเครือข่ายของคุณลดลงให้เชื่อมต่อและใช้screen -DRเพื่อเชื่อมต่อเซสชันอีกครั้ง
ระวัง

@nix มันจะใช้ได้กับแอพ X หรือไม่?
Michael Mrozek

2
@nix ฉันไม่คิดว่าจะใช้screenงานได้กับแอป gui
Abdullah Jibaly

แน่นอนหน้าจอจะต้องเรียกใช้จาก xterm
ระวัง

คำตอบ:


32

XpraหรือXpra ทางแยกอ้างว่า:

ดังนั้นโดยทั่วไปมันเป็นหน้าจอสำหรับแอป X ระยะไกล

ฉันไม่ได้ใช้งานมาระยะหนึ่งแล้ว แต่ก็ใช้งานได้ดีเมื่อฉันลอง คุณเริ่มต้นเซิร์ฟเวอร์บนเครื่องระยะไกล:

[remote] $ xpra start :13

จากนั้นคุณแนบกับเซิร์ฟเวอร์จากเครื่องท้องถิ่นของคุณ:

[local] $ xpra attach ssh:remote:13

และตอนนี้ทุกสิ่งที่แสดงบน X display 13 บนเครื่องระยะไกลจะปรากฏขึ้นในเครื่อง:

[remote] $ DISPLAY=:13 xeyes

4
นอกจากนี้ยังมีWinSwitchซึ่งดูเหมือนว่าจะรวม xpra และซอฟต์แวร์อื่น ๆ ที่เกี่ยวข้อง
Gilles 'หยุดความชั่วร้าย'

6

คุณกำลังมองหาVNC หลักการค่อนข้างคล้ายกับหน้าจอ: คุณเรียกใช้เซิร์ฟเวอร์ VNC ( SCREENกระบวนการพื้นหลัง) และไคลเอนต์ VNC ( screenกระบวนการพื้นหน้า) เซิร์ฟเวอร์ VNC เป็นเซิร์ฟเวอร์ X ดังนั้นคุณจึงสามารถเรียกใช้แอปพลิเคชัน X ในนั้นได้

เรียกใช้เซิร์ฟเวอร์ VNC บนกล่อง Linux และไคลเอนต์ในกล่อง Windows คุณมีการใช้งานหลายอย่างให้เลือก หนึ่งในความเป็นไปได้คือTightVNC TightVNC อยู่ในลีนุกซ์หลายรุ่น (หากไม่ใช่ของคุณ, ติดตั้งหรือเลือกการนำไปใช้ที่ต่างกัน), และมีไคลเอนต์ Windows

หากเครื่องทั้งสองของคุณไม่ได้อยู่ใกล้กับเครือข่าย - หากมีไฟร์วอลล์หรือความเสี่ยงต่อการดักฟังระหว่างเครื่อง - คุณจะต้องเจาะช่องทางการรับส่งข้อมูล VNC ผ่าน ssh มีการส่งต่อพอร์ตโลคัล 5900 ไปยังรีโมตพอร์ต 5900 (5900 สอดคล้องกับจอแสดงผล:0ใช้ 5901 สำหรับ:1ฯลฯ )


4

ที่จริงแล้วคุณสามารถส่งต่อ X screenลงใน สิ่งเดียวที่ต้องทำคือการตั้งค่า$DISPLAYในscreenหน้าต่างเพื่อให้มันเป็นด้านเดียวกันของมัน

ขั้นตอน

หลังจากssh -Xเข้าไปในเครื่องระยะไกลให้พิมพ์

$ echo $DISPLAY

localhost:N.0และคัดลอกผลปกติ จากนั้นเข้าสู่หน้าต่างscreenท้องถิ่นscreen

$ export DISPLAY=localhost:N.0

หลังจากนี้ให้เรียกXใช้โปรแกรมที่จำเป็นภายในหน้าต่างหน้าจอจะทำ

หมายเหตุ:สำหรับแต่ละscreenหน้าต่างตัวแปรสภาพแวดล้อมมีความเป็นอิสระ ดังนั้นสำหรับแต่ละหน้าต่างคุณอาจต้องตั้งค่าแยกต่างหาก

อ้างอิง


1
สวัสดีจงยินดีต้อนรับสู่ยูนิกซ์ซีเอส เนื่องจากรายละเอียดของโซลูชันที่คุณลิงก์นั้นเรียบง่ายจึงควรเขียนใหม่อย่างชัดเจนที่นี่ วิธีนี้จะรักษาคำตอบหากมีบางสิ่งเกิดขึ้นกับโพสต์บน askubuntu.com แน่นอนว่ามันเป็นความคิดที่ดีที่จะเก็บลิงค์ไว้เช่นกันเพราะมันช่วยในการหาแหล่งข้อมูลของคุณ
drs

2
ฉันลองวิธีนี้แล้ว แต่ฉันไม่สามารถปิดเซสชัน ssh ของฉันโดยไม่ฆ่าแอปพลิเคชัน X ที่กำลังทำงานอยู่ นี่จะเป็นการทำลายวัตถุประสงค์ของมัน ... ฉันจะตัดการเชื่อมต่อจากรีโมตโฮสต์ออกจากแอปพลิเคชันระยะไกลได้อย่างไร
Tonin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.