SSH: रिमोट स्क्रीन पर GUI प्रोग्राम लॉन्च करें, एक्स डिस्प्ले नहीं


11

समस्या

अधिकांश लोग क्लाइंट के प्रदर्शन का उपयोग करके दूरस्थ होस्ट पर GUI प्रोग्राम चलाने के लिए "-X" विकल्प के साथ ssh के सर्वर पर कनेक्ट करना चाहते हैं। मैं सर्वर से जुड़े भौतिक मॉनिटर पर जीयूआई कार्यक्रम चलाना चाहूंगा। क्या यह संभव है ? मुझे ज्यादा केंद्रित होना चाहिए:

मेरी स्थिति निम्नलिखित है: मेरे पास कीबोर्ड या माउस के बिना एक कार्य केंद्र है, लेकिन इसमें एक मॉनिटर जुड़ा हुआ है। मैं अपने लैपटॉप के साथ इसे एसएसएच करना चाहूंगा और कुछ चित्रमय कार्यक्रम, जैसे कि xeyes या ssvnc लॉन्च करने में सक्षम हो सकता हूं और यह कार्य केंद्र के मॉनिटर पर दिखाई देगा।

[xapple@laptop ~]$ ssh workstation
Last login: Mon Sep 26 20:03:35 2011 from laptop
[xapple@workstation ~]$ export DISPLAY=:0
[xapple@workstation ~]$ xeyes
No protocol specified
Error: Can't open display: :0

संपादित करें: अतिरिक्त जानकारी

मुझे शायद कुछ बातें और स्पष्ट रूप से बतानी चाहिए:

  • मेरे पास वर्कस्टेशन पर सुडो एक्सेस है, जरूरत पड़ने पर मैं कुछ भी इंस्टॉल कर सकता हूं।
  • वर्कस्टेशन GNOME उपयोगकर्ता इंटरफ़ेस चला रहा है।
  • कार्य केंद्र से कीबोर्ड और माउस को डिस्कनेक्ट करने से पहले, मैंने एक गनोम सत्र में लॉग इन किया। वर्तमान में वर्कस्टेशन के मॉनिटर पर मेरा GNOME डेस्कटॉप देख सकता है।
  • मैं अपने लैपटॉप से ​​वर्कस्टेशन पर प्रोग्राम चलाने की इच्छा नहीं रखता। मैं वर्कस्टेशन पर वर्कस्टेशन प्रोग्राम चलाना चाहता हूं। रिमोट सर्वर पर xeyes या जो भी निष्पादन योग्य पाया जाता है और उसे रिमोट सर्वर के मॉनिटर पर चलाया जाना चाहिए
  • मैं समझता हूं कि यह प्रदर्शन मुझे ऐसी स्थिति में छोड़ देगा जहां मेरा कर्सर इंटरफ़ेस से जुड़ा नहीं होगा। मैं चीजों पर क्लिक नहीं कर पा रहा हूं। ठीक है।

किसी भी मदद की बहुत सराहना की!


क्या आपने xhost +अपने सर्वर पर अमल किया?
कार्लफिलिप

मुझे लगता है कि यह भी एक दिलचस्प सवाल है, उदाहरण के लिए यदि आपके पास 3 के बीच एक ही कीबोर्ड और माउस का उपयोग करने के लिए सिनर्जी चलने वाले 3 ubuntu पीसी हैं ... जब आप लॉग इन करते हैं तो आपको 3 बार लॉग इन करना होगा। एक स्क्रिप्ट बनाना अच्छा होगा जो आपको मुख्य पीसी में लॉग इन करते समय अन्य दो पीसी में लॉग इन करे।
सेवर्रे

जवाबों:


5

किसी भी xlib-एप्लिकेशन को एक xserver से कनेक्ट होना चाहिए। आपको ऐप को सर्वर से कनेक्शन को या तो बताना होगा:

  • पर्यावरण चर प्रदर्शन की स्थापना
  • जैसे कमांड लाइन के झंडे का उपयोग करना -display

पहले xserver को आमतौर पर कनेक्शन स्ट्रिंग ': 0' तक पहुँचा जा सकता है। तो, यह प्रयास करें:

xeyes -display :0

या यह

env DISPLAY=:0 xeyes

कई मामलों में (जैसे कि GNOME के ​​GDM द्वारा शुरू किया गया), सेटिंग XAUTHORITYकी भी आवश्यकता होगी, क्योंकि X11 सर्वर एक अस्थायी Xauthority फ़ाइल का उपयोग करेगा।
user1686

दिलचस्प है, $ DISPLAY वैरिएबल सेट करने के बाद, मुझे अब "एरर: कैन ओपन ओपन डिस्प्ले" मैसेज के अलावा, "नो प्रोटोकॉल निर्दिष्ट" मैसेज जब xeyes लॉन्च करने की कोशिश कर रहा है।
xApple

@ सलाह के लिए धन्यवाद। क्या मैं पूछ सकता हूं कि मैं अपने कार्य के लिए अपनी XAUTHORITY कैसे सेट करूंगा?
xApple

5

क्या यह वर्कस्टेशन एक्स विंडोज सर्वर चला रहा है? उसके बिना, यह सब लूट है।

आपको ग्राफ़िक्स, पिक्सेल, रंग और स्थानों में डेटा को संसाधित करने के लिए SOMETHING की आवश्यकता है। इसे चलाने के लिए कुछ प्रकार के सॉफ़्टवेयर के बिना एक 'मॉनिटर' बेकार है।

मान लिया गया है। (लेकिन पाठ से, निश्चित रूप से लगता है अन्यथा)

'वर्कस्टेशन' और 'लैपटॉप' के होस्ट नामों (और उपयुक्त DNS रिज़ॉल्यूशन / आदि / होस्ट या DNS या जो भी हो) को देखते हुए ... यदि नहीं, तो मशीन होस्ट नामों को उपयुक्त IP पतों के साथ बदलें।

ssh workstation
xhost +laptop

आप इस बिंदु पर वर्कस्टेशन से लॉग आउट कर सकते हैं, क्योंकि यह वर्कस्टेशन के एक्ससेवर पर अनुमतियों को 'लैपटॉप' को कनेक्ट करने की अनुमति देता है।

यदि आप अपने प्रोग्राम को DISPLAY env var सेट के साथ उचित रूप से शुरू करते हैं, तो आप अपने लैपटॉप पर रन करते समय एप्लिकेशन को वर्कस्टेशन पर प्रदर्शित कर सकते हैं।

DISPLAY=workstation:0 xeyes

-या-

export DISPLAY=workstation:0
xeyes

दोनों में से कोई भी विधि काम करेगी, बाद वाला X11 से संबंधित कुछ भी कारण उस शेल से शुरू होने पर कार्य केंद्र पर प्रदर्शित होता है। (आशा है कि समझ में आया)

'Xhost' लाइन कार्य केंद्र के Xserver से जुड़ने के लिए लैपटॉप को अनुमति देने के लिए है। इसके बिना, आपको अनुमति से वंचित कर दिया जाएगा, जब तक कि आप एक्स सर्वर को नो परमिशन के साथ शुरू नहीं करेंगे, जो वास्तव में अनुशंसित नहीं है। 'Xhost' सुरक्षा अभी भी लंगड़ा है, क्योंकि डेटा को लैपटॉप और वर्कस्टेशन के बीच 'प्लेन-टेक्स्ट' भेजा जाता है और इसे सूँघा जा सकता है, लेकिन यह एक आसान उपाय है।

यदि आप गोपनीयता चाहते हैं, तो आपको अपने लैपटॉप और कार्य केंद्र (प्रदर्शन के लिए पोर्ट 6000: 0) के बीच कुछ प्रकार की एन्क्रिप्टेड सुरंग स्थापित करने की आवश्यकता होगी। हाँ, यह इस बिंदु पर अजीब हो जाता है।

यदि आप एक नियंत्रित वातावरण में हैं, तो 'xhost + laptop' कमांड का उपयोग करना पर्याप्त होगा, यदि आप उस कमांड 'xhost +' के 'लैपटॉप' भाग को छोड़ देते हैं, तो कोई भी व्यक्ति Xserver से जुड़ सकता है और चीजों को प्रदर्शित कर सकता है।

याद रखें, आपका माउस वर्कस्टेशन Xserver से 'कनेक्टेड' नहीं है, और आप विंडोज़ में हेरफेर या चीजों पर क्लिक नहीं कर पाएंगे।

यदि आप चाहते हैं कि माउस जुड़ा हो, तो मैं x2x, synergy, vnc या X Windows आधारित स्क्रीन शेयरिंग एप्लिकेशन जैसी किसी चीज़ की सिफारिश करूंगा।


आपके उत्तर के लिए धन्यवाद ! आप सही हैं, मुझे शायद कुछ और बातें निर्दिष्ट करने की आवश्यकता है: (1) वर्कस्टेशन GNOME उपयोगकर्ता इंटरफ़ेस चला रहा है (2) मैं अपने लैपटॉप से ​​प्रोग्राम चलाना नहीं चाहता। Xeyes या जो कुछ भी वर्कस्टेशन पर वर्कस्टेशन के मॉनिटर के साथ चलना चाहिए (3) यह ठीक है, मैं समझता हूं कि मेरा कर्सर कनेक्ट नहीं होगा।
xApple

ओह, तो आपको वास्तव में केवल वर्कस्टेशन पर ssh की जरूरत है, DISPLAY वैरिएबल को 'localhost: 0' (या सिर्फ ': 0') पर सेट करें और अपना ऐप शुरू करें। आपको अभी भी अनुमतियों से निपटने की आवश्यकता होगी (xhost + localhost शायद सबसे अच्छा जवाब है) और या तो nohup, या &! (बैकग्राउंड एंड डिसऑर्डर), या bg / disown कमांड शेल से इसलिए ऐप जब आप लॉग आउट करते हैं तो वह नहीं छोड़ता है। (जब तक कि आप क्या चाहते हैं, तब तक)
लोरिक्स

आह, तो शायद मेरी समस्या केवल एक अनुमति समस्या है। हालाँकि, अगर मैं "xeyes" चलाता हूं, तो रूट मैसेज वही है। यदि आप एक उत्तर देते हैं जो अनुमति की समस्याओं को हल करता है, तो मैं इसे हल कर सकता हूं!
xApple

क्या वर्कस्टेशन पर एक्स विंडो सेशन में किसी को लॉग इन किया गया है? इसके बिना, प्रोग्राम कनेक्शन के लिए सुनने वाला कोड अभी तक सक्रिय नहीं है, बस लॉगिन सामान है। (मैं बहुत सरल कर रहा हूँ!) वर्कस्टेशन पर ssh'ing की कोशिश करो, फिर 'startx', जब आप डिस्प्ले से कनेक्ट करने में सक्षम हो सकते हैं। एक अन्य तरीका नंगे हड्डियों के एक्स सर्वर का उपयोग करना है, 'X: 0 &' टाइप करना, DISPLAY वैरिएबल सेट करना और फिर 'xhost + लैपटॉप' (या सिर्फ 'xhost +') का प्रदर्शन करना। लेकिन यह ज्यादातर के लिए थोड़ा कम-स्तर हो रहा है। (परीक्षण के लिए बढ़िया!)
lornix

हां, मैंने कीबोर्ड और माउस को डिस्कनेक्ट करने से पहले वर्कस्टेशन पर एक गनोम सत्र में लॉग इन किया। किसी ने भी मेरे ssh सत्र से "startx" कमांड को निष्पादित करने की कोशिश नहीं की। त्रुटि संदेश निम्न था: "एक्स: उपयोगकर्ता एक्स सर्वर को चलाने के लिए अधिकृत नहीं है, गर्भपात कर रहा है।"
xApple
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.