X11 अग्रेषण सक्षम करने के बाद ssh'ing के बाद X प्रोग्राम खोलते समय मैं "ओपन डिसप्ले" त्रुटि को कैसे ठीक कर सकता हूँ?


110

मेरे मैक (OS X 10.6.8) पर X11 ऐप (XQuartz 2.3.6, xorg-server 1.4.2-apple56) लॉन्च करने के बाद, X11 में एक टर्मिनल खोलना और दौड़ना xhost +, मैं तब ssh -Yअपने Ubuntu 10.04 VM (VMware पर दौड़ना) कर रहा हूं फ्यूजन)। जब मैं दौड़ता हूं gedit .bashrc(उदाहरण के लिए), मुझे मिलता है:

(gedit:9510): Gtk-WARNING **: cannot open display: 

set | grep DISPLAY कुछ नहीं देता।

लेकिन अगर मैं ssh -Yअपने Ubuntu 11.04 मशीन में gedit .bashrcकाम करता हूं । echo $DISPLAYरिटर्न "लोकलहोस्ट: 10.0"।

मैंने export DISPLAY=localhost:10.0अपने वीएम में sshed और फिर चलने की कोशिश की gedit .bashrc, लेकिन मुझे मिल गया:

(gedit:9625): Gtk-WARNING **: cannot open display: localhost:10.0

दो अंतर उबंटू मशीनों के विन्यास में क्या अलग हो सकता है जो यह बताता है कि एक काम क्यों करता है और दूसरा नहीं करता है?

अद्यतन: जैसा कि नीचे टिप्पणी में Zoredache द्वारा सुझाया गया है, मैं भागा sudo apt-get install xbase-clients, लेकिन मुझे वही समस्या है।


2
क्या Ubuntu 10.04 बॉक्स में X11 स्थापित करने के लिए उचित उपकरण हैं? यदि यह पहले से स्थापित नहीं है, तो xbase- क्लाइंट स्थापित करें।
Zoredache

मैं इसे स्थापित किया है, लेकिन अभी भी एक ही समस्या है। (ऊपर देखें।)
डेरिल स्पिट्जर

3
शायद जब आप कनेक्ट करने के लिए -vv विकल्प को पास करने की कोशिश करते हैं, तो यह डीबग संदेश को मुद्रित करता है, आपको कनेक्ट करते समय X11 अग्रेषण के बारे में कई टिप्पणियां देखनी चाहिए।
ज़ॉकेडैच

1
@jcrawfordor आपने उबंटू एक X11Forwardingपर जांच की , और जो आपने xbase-clientsस्थापित किया है और आप जिस टर्मिनल से एसएचएस कनेक्शन बना रहे हैं उस पर मैक पर एक्सएपी शुरू कर सकते हैं। (चेक करें कि $DISPLAYआपके द्वारा ssh चलाने वाले टर्मिनल पर सेट है
Manwe

1
मेरे मामले में यह सिर्फ MacOS के XQuartz संस्करण को अपग्रेड करने का मामला था
Waruna Ranasinghe

जवाबों:


47

सर्वर का sshd_config (सामान्य रूप से /etc/ssh/sshd_config) जांचें , और सुनिश्चित करें कि लाइन के साथ X11Forwarding विकल्प सक्षम है

X11Forwarding yes

यदि X11Forwarding निर्दिष्ट नहीं है, तो डिबेट उन मशीनों पर नहीं है जिन्हें मैंने जांचने के लिए उपलब्ध किया है।


4
मुझे एक और उबंटू वीएम की स्थापना के बाद पता चला, कि मुझे xbase- क्लाइंट को स्थापित करने और X11Forwarding को सक्षम करने की आवश्यकता है। दोनों को शामिल करने के लिए अपने उत्तर को अपडेट करें और मैं इसे स्वीकार करूंगा।
डेरिल स्पिट्जर

1
दिलचस्प। कम से कम 10.04 की नई स्थापना पर जो मैंने आज सुबह किया था X11Forwarding डिफ़ॉल्ट रूप से सक्षम था। उबंटू के लोगों को फिर से चूक के साथ खिलवाड़ करना चाहिए।
ज़ॉकेडैच

28
@DerfK, अपने सिस्टम में पहले से ही "X11Forwarding हाँ" था फिर भी मैं के रूप में, त्रुटि हो रही है (एडिट: 8381): जीटीके-चेतावनी **: नहीं खोल सकते प्रदर्शन: ऐसे मामलों में
ए जे

1
डेबियन पर आपको पैकेज xauth स्थापित करना पड़ सकता है, फिर लॉग इन करें।
कॉम्टे

$ ssh उपयोगकर्ता नाम @ hostname-यह मेरे लिए काम किया
MarcoZen

59

से xhost +: कैसे तय करने के लिए "नहीं खोल सकता प्रदर्शन" त्रुटि दूरस्थ सर्वर पर जीयूआई का शुभारंभ करते हुए :

उत्तर : आप इस लेख में उल्लिखित xhost प्रक्रिया का पालन करके "प्रदर्शन नहीं खोल सकते" त्रुटि को ठीक कर सकते हैं।

ग्राहकों को xhost + का उपयोग करके किसी भी होस्ट से कनेक्ट करने की अनुमति दें

एक्सेस कंट्रोल को अक्षम करने के लिए निम्न कमांड निष्पादित करें, जिसके द्वारा आप क्लाइंट को किसी भी होस्ट से कनेक्ट करने की अनुमति दे सकते हैं।

$ xhost +

एक्सेस कंट्रोल डिसेबल, क्लाइंट्स किसी भी होस्ट से कनेक्ट कर सकते हैं

X11 अग्रेषण सक्षम करें

S11 करते समय X11 अग्रेषण को सक्षम करने के लिए विकल्प -X का उपयोग करें।

$ ssh username@hostname -X

विश्वसनीय X11 अग्रेषण सक्षम करें, -Y विकल्प का उपयोग करके,

$ ssh username@hostname -Y

उस होस्ट में GUI एप्लिकेशन खोलें

ऊपर बताए अनुसार दूरस्थ होस्ट के लिए ssh कनेक्शन खोलने के बाद, आप कोई भी GUI एप्लिकेशन खोल सकते हैं जो इसे बिना किसी समस्या के खोलेगा।

यदि आपको अभी भी "प्रदर्शन नहीं खोल सकता" त्रुटि मिलती है, तो नीचे दिखाए गए अनुसार प्रदर्शन चर सेट करें।

$ export DISPLAY='IP:0.0'

नोट: IP स्थानीय कार्य केंद्र का IP है जहाँ आप चाहते हैं कि GUI एप्लिकेशन प्रदर्शित हो।


11
+1 के लिए ध्यान दें कि IP = स्थानीय कार्य केंद्र का IP है जहाँ आप GUI प्राप्त करना चाहते हैं
PCoder

3
ओएस एक्स पर इसी तरह के मुद्दों वाले लोगों के लिए, यह भी सुनिश्चित करें कि आपने XQuartz स्थापित किया है, अन्यथा इनमें से कोई भी फिक्स मदद नहीं करता है। (ओपी के सवाल से पता चलता है कि उसके पास XQuartz है, इसलिए यह उन लोगों के लिए एक साइड नोट है, जो मेरे जैसे ही थे।)
डोलन एंटेनुसी

3
ध्यान दें कि चल रहा xhost +है बहुत असुरक्षित है और इसका उपयोग नहीं किया जाना चाहिए! जैसा कि स्टीफन रोजिन ने उल्लेख किया है, हमलावर तब होस्ट से आपके XSession से जुड़ सकता है, जो आप टाइप करते हैं, या यहां तक ​​कि आपके द्वारा देखी गई स्क्रीन को भी बदल सकते हैं।
जिरिस्लाव

18

मैक ओएस एक्स से उबंटू वीएम में प्रवेश करते समय मुझे यह समस्या हुई है - यह किसी कारण से डिस्प्ले चर में 'लोकलहोस्ट' की तरह प्रतीत नहीं होता है। इसलिए IP को मैन्युअल रूप से सेट करें, जैसा कि harrymc बताता है:

export DISPLAY="127.0.0.1:10.0"

फिर X11 प्रोग्राम ठीक होना चाहिए। ऐसा नहीं लगता कि ओएस को यह बताना आवश्यक होना चाहिए कि लोकलहोस्ट और 127.0.0.1 बराबर हैं, लेकिन यह कम से कम काम करता है।


इसने मेरे लिए काम किया। किसी भी विचार क्यों स्थानीयहोस्ट काम नहीं कर रहा था?
एलेक्स

2
बिंगो! मैं कुछ समय के लिए उस समस्या से फंस गया हूँ ... मैं SSH से जुड़ा और Gtk प्रोग्राम (सादा X11, जैसे "xeyes", काम नहीं कर सका) लॉन्च किया। प्रदर्शन सही था। वास्तव में, "लोकलहोस्ट" का संकल्प नहीं था! यदि मैं मैन्युअल रूप से DISPLAY = 127.0.0.1: 10.0, या DISPLAY = :: 1: 10.0 सेट करता हूं तो यह काम करता है। संपादन / आदि / मेजबानों पर कोई प्रभाव नहीं पड़ता है; और DNS को सही तरीके से कॉन्फ़िगर किया गया है ("डिग लोकलहोस्ट" correclty रिपोर्ट दोनों 127.0.0.1 और :: 1) तो, यह Gtk (gtk? gdk? glib?) में X11 कनेक्शन के लिए DNS रिज़ॉल्यूशन में जो भी DNS रिज़ॉल्यूशन करता है, वह एक बग प्रतीत होता है।
पाब्लो शरतगागा

1
बीगल बोन ब्लैक के लिए डेबियन इंस्टॉल पर, / etc / host किसी के द्वारा पठनीय पर सेट नहीं किया गया था, लेकिन रूट। इसके कारण यहां लक्षण दिखाई दिए। मेड / आदि / मेजबान सभी द्वारा पठनीय, और यह ठीक काम किया।
डैनियल

13

मुझे अपने CentOS KVM सर्वर के साथ यह समस्या थी, मुझे "xauth" प्रोग्राम याद आ रहा था।


1
इससे मुझे अपने न्यूनतम डेबियन इंस्टॉलेशन पर मदद मिली, बहुत-बहुत धन्यवाद!
बिनर

9

यदि आपको अर्ग के साथ चलने के कुछ समय बाद यह समस्या है -X। या सिर्फ ForwardX11/ etc / ssh / ssh_config में, फिर चलाएं $ ssh username@hostname -Y, विश्वसनीय X11 अग्रेषण को सक्षम करने के लिए , सटीक कारण नहीं जानते लेकिन मैं अनुमान लगा रहा हूं कि -Xकुछ सुविधाओं के कुछ समय के बाद समाप्त हो सकता है, शायद सुरक्षा बढ़ाने के लिए।

यहाँ मैं ऑनलाइन पाया गया है:

यदि आप ssh-x remotemachine का उपयोग करते हैं तो रिमोट मशीन को एक अविश्वसनीय ग्राहक के रूप में माना जाता है। तो आपका स्थानीय क्लाइंट रिमोट मशीन को कमांड भेजता है और ग्राफिकल आउटपुट प्राप्त करता है। यदि आपका आदेश कुछ सुरक्षा सेटिंग्स का उल्लंघन करता है, तो आपको इसके बजाय एक त्रुटि प्राप्त होगी।

लेकिन अगर आप ssh -Y remotemachine का उपयोग करते हैं तो रिमोट मशीन को विश्वसनीय ग्राहक माना जाता है। यह अंतिम विकल्प सुरक्षा समस्याओं को खोल सकता है। क्योंकि अन्य ग्राफ़िकल (X11) क्लाइंट दूरस्थ मशीन से डेटा को सूँघ सकता है (स्क्रीनशॉट बना सकते हैं, की-क्लोज़िंग और अन्य गंदा सामान कर सकते हैं) और उन डेटा को बदलना भी संभव है।

यदि आप उन चीजों के बारे में अधिक जानना चाहते हैं, जो मुझे Xsecurity manpage या X Security extension कल्पना पढ़ने का सुझाव देती हैं। इसके अलावा आप अपने / etc / ssh / ssh_config में दिए गए ForwardX11 और ForwardX11Trust विकल्पों की जांच कर सकते हैं।

सूत्रों का कहना है:


6

बस मेरे मैक पर परीक्षण किया गया, अन्य सिस्टम ठीक हो सकते हैं :

  1. ग्राहकों को xhost + का उपयोग करके किसी भी होस्ट से कनेक्ट करने की अनुमति दें

    $ xhost +

  2. आपके पास एक ऐसा वातावरण होना चाहिए जो X11 डिस्प्ले का समर्थन करता है

    [मैक सिस्टम] मैक के लिए X11 स्थापित करें https://www.xquartz.org/

  3. आपको अपने ssh-server को x11 डिस्प्ले को आगे बढ़ाने देना चाहिए

    अपडेट /etc/ssh/sshd_configऔर सेट करें X11Forwarding yes, फिर अपने ssh सर्वर को पुनरारंभ करें

  4. आपको अपने ssh सत्र को -Xपैरामीटर के साथ x11 प्रदर्शन को आगे बढ़ाने देना चाहिए

    $ ssh -X user @ ip

  5. PyCharm में X11 ऐप कैसे खोलें?
    • एक ssh सत्र खोलें जो X11 डिस्प्ले का समर्थन करता है (इस सत्र को रखने के लिए याद रखें)
    • echo $DISPLAYउस ssh सत्र में चलाएं
    • DISPLAYअपने PyCharm के लिए पर्यावरण चर सेट करें

1
यह अलग क्यों है या इसे किसी अन्य उत्तर पर क्यों पसंद किया जाना चाहिए? कृपया समझाएं कि क्या आप एक सरल संपादन के साथ कर सकते हैं । तुम कर सकते हो!!
पिंप जूस आईटी

@ मैकडॉनल्ड्स थैंक्स, अधिक विवरण के साथ अपडेट किया गया।
रंग

4

UXTERM या XTERM चलाते समय सिर्फ समस्या

export $DISPLAY 

चर होगा। फिर बस इसे सेट करें और इसे निर्यात करें।


4

मुझे /etc/ssh/sshd_configनिम्नलिखित में डालना था :

X11UseLocalhost no

बल्कि फिर इसे "हां" सेट करना। यदि विंडोज के तहत एक्समिंग के साथ पोटीन का उपयोग कर उपयोगकर्ता डिफ़ॉल्ट नहीं है, तो अजीब बात है। मैं Fedora पर सीधे ssh का उपयोग करता हूं। कभी-कभार यह हमें देना शुरू कर देता

error can't open display localhost

सर्वर का रिबूट आमतौर पर इसे ठीक कर देगा लेकिन यह बेवकूफी है। ऊपर किया गया था, sshdसर्वर पर सेवा को फिर से शुरू किया और फिर से ठीक काम कर रहे नए कनेक्शन को presto।


2

मुझे सोलारिस 10 के साथ भी यह समस्या थी और पाया कि श्रोता सेट नहीं था।

svccfg –s /application/x11/x11-server listprop options/tcp_listen
svccfg –s /application/x11/x11-server setprop  options/tcp_listen = true

1

CentOS 6.5 पर, मैंने अचानक / etc / मेजबान के साथ गड़बड़ करने के बाद रिमोट एक्स-प्रोग्राम एक्सेस को खो दिया। खाली $ प्रदर्शन चर के समान लक्षण (मैन्युअल रूप से इसे स्थापित करने / निर्यात करने में कोई मदद नहीं)।

127.0.0.1 वास्तविक होस्टनाम की ओर इशारा करते हुए प्रविष्टि आवश्यक है; वास्तव में यह आदेश भी प्रासंगिक प्रतीत होता है (अंतिम कार्य करें और यह कारगर नहीं होगा ...)

[root@poseidon /etc]$ cat hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       localhost.localdomain localhost
::1     localhost6.localdomain6 localhost6
127.0.0.1 poseidon.mycampus.edu poseidon
1XX.XXX.XXX.208 poseidon.mycampus.edu poseidon

इसे ठीक करने के बाद, xeyes, xclock और अन्य X परीक्षण खिलौने फिर से काम कर रहे हैं, इसलिए मेरे लिए आवश्यक पुण्य-प्रबंधक भी लाइन में हैं।


1

मुझे बस अपने सेटअप में एक अच्छी हिचकी मिली जिसने x अग्रसारण को रोका: मेरा फ़ायरवॉल लोकलहोस्ट से सभी कनेक्शनों को रोक रहा था, इस प्रकार सुरंग तक पहुँचने से रोक रहा था।


1

यदि आप कोनो कंसोल का उपयोग कर रहे हैं तो बस दूसरे टर्मिनल एमुलेटर जैसे कि Xfce टर्मिनल पर जाएं और रूट का उपयोग करके फिर से प्रयास करें।


1

खुले टर्मिनल $ ssh उपयोगकर्ता नाम @ hostname -X

$ ssh username@hostname -Y

$ export DISPLAY='IP:0.0'

निर्यात प्रदर्शन = "127.0.0.1:10.0" सभी को काम करना चाहिए।


धन्यवाद। मेरे विशेष मामले के लिए काम करता है जब DISPLAY='localhost:10.0'काम नहीं कर रहा है।
xpt

1

यह सेटअप मेरे लिए काम करता है:

स्थानीय (विंडोज 10 पर 64 बिट सिगविन) DISPLAY=:0

सर्वर (अमेज़न EC2 RHEL 7.6) DISPLAY=:10.0

इन सेटिंग्स को टास्कबार में "एक्स एप्लिकेशन मेनू ऑन: 0" पर क्लिक करके और सिस्टम टूल्स> टर्मिनल का चयन करके पाया गया था


0

बहुत हताशा के बाद मुझे पता चला कि उसके / etc / host फ़ाइल में सर्वर के होस्टनाम के लिए प्रविष्टि गलत थी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.