ssh लॉगिन के माध्यम से x11 डिस्प्ले क्यों काम नहीं करेगा?


22

मैंने एक दूरस्थ सर्वर में लॉग इन किया है और एक एक्स एप्लिकेशन (जैसे फ़ायरफ़ॉक्स) प्रदर्शित करने की कोशिश कर रहा हूं। लेकिन एक त्रुटि संदेश दिखाई देता है। नीचे फ़ायरफ़ॉक्स खोलने के मेरे प्रयास हैं

Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
[kwagjj@James5 ~]$ firefox
Error: no display specified
[kwagjj@James5 ~]$ exit
logout
Connection to 143.248.146.204 closed.

Black@Black-PC ~
$ ssh -Y kwagjj@$labserver -p 122
[kwagjj@James5 ~]$ firefox
Error: no display specified
[kwagjj@James5 ~]$ 

मैंने -X का उपयोग किया है, क्योंकि मैंने कहीं पढ़ा है कि ये दोनों विकल्प एक्स 11 के संबंध में साख से संबंधित हैं और ये स्विच मेरे लिए काम करेंगे। -X, -वाई स्विच के बिना भी, मेरा प्रयास विफल रहा।

'नो डिस्प्ले स्पीसीफाइड' त्रुटि का क्या मतलब है?

PS अजीब बात यह है कि अगर मैं अपने PUTTY के माध्यम से रिमोट सर्वर से जुड़ता हूं और कमांड 'फ़ायरफ़ॉक्स' को दोहराता हूं।? -? (फ़ायरफ़ॉक्स स्थानीय कंप्यूटर पर प्रदर्शित होता है।

PS मेरा स्थानीय कंप्यूटर विंडोज 7 है, इसलिए मुझे X11 को प्रदर्शित करने की अनुमति देने के लिए पृष्ठभूमि पर Xming चल रहा है। ऊपरी भाग पर लिखे गए प्रयास के अनुसार, कमांड को सिग्विन टर्मिनल में टाइप किया गया था।


क्या आपने अपने Cygwin टर्मिनल से स्थानीय रूप से कुछ प्रदर्शित करने की कोशिश की है? उदाहरण के लिए, आप एक स्थानीय एक्स उपयोगिता पा सकते हैं जैसे कि एक्सक्लॉक और इसे चलाने के लिए देखें कि क्या होता है। यदि आप स्थानीय रूप से प्रदर्शित नहीं कर सकते, तो दूरस्थ प्रदर्शन काम नहीं करेगा। आपको Cygwin के लिए X सर्वर की भी आवश्यकता हो सकती है।
unxnut

1
@unxnut जैसा कि आपने बताया है, मेरा DISPLAYचर सेट नहीं किया गया था। इसलिए मैंने इसे export DISPLAY=:0.0' and executed xclock` के साथ सेट किया और xclock दिखाई दिया। लेकिन जब मैंने ssh के माध्यम से रिमोट सर्वर पर लॉग इन किया, और xclockफिर से कोशिश की , तो यह कहता हैError: Can't open display:
kwagjj

जवाबों:


16

सुनिश्चित करें कि आपके पास अपने साइबर-पर्यावरण में DISPLAY- चर सेट है:

export DISPLAY=:0.0

SSH के साथ जुड़ने के बाद, जांचें कि क्या शेल भी सही DISPLAY- चर को जानता है:

echo $DISPLAY

4
मैंने DISPLAY वैरिएबल को स्थानीय कंप्यूटर के cygwin टर्मिनली में सेट किया और बाद में ssh'ed को दूरस्थ सर्वर और टाइप किया echo $DISPLAY। लेकिन अभी भी रिमोट सर्वर में DISPLAY वैरिएबल कुछ भी सेट नहीं है ..
kwagjj

2
Error: Can't open display: :0.0
अहमद

2
ऐसा करें:export DISPLAY=localhost:0
trogne

18

मैं सिर्फ इस समस्या में एक बिना सिर वाला RHEL7 सर्वर से जुड़ गया।

DISPLAY चर को सेट करने के लिए, और ठीक से अधिकृत होने के लिए आपको अपने होस्ट पर स्थापित xorg-x11-xauth पैकेज की आवश्यकता है।

आशा है कि मैंने कुछ समय किसी को बचाया।


3
ठीक वही जो मेरे द्वारा खोजा जा रहा था। बहुत सराहना की!
जोश-कैन

1
बहुत बढ़िया जवाब! अन्य समाधान (निर्यात के माध्यम से मैन्युअल रूप से प्रदर्शन की स्थापना) के परिणामस्वरूप क्लाइंट और सर्वर के बीच एक अनएन्क्रिप्टेड ट्रांसमिशन होगा! डेबियन स्क्वीज़ पर यह "xauth" पैकेज था जिसे काम करने के लिए सब कुछ स्थापित करने की आवश्यकता थी। ssh -Xकिसी दिए echo $DISPLAYगए URL + पोर्ट के प्रति फिर से लॉगिन करने और xterm &स्थानीय विंडो में टर्मिनल खोलने की कॉल के बाद ।
जेपी

7

मेरी मदद करने के लिए @jensd, @unxnut को धन्यवाद। आपकी टिप्पणियों के आधार पर मैं इस समस्या का पता लगाने में सक्षम था।

समाधान के लिए दो चरणों की आवश्यकता थी:

  1. प्रदर्शन चर ठीक से सेट किया जाना चाहिए।
  2. जब दूरस्थ सर्वर के लिए ssh'ing, -X स्विच चालू होना चाहिए

मेरे पिछले प्रयासों में इन दोनों स्थितियों में से एक या दोनों का अभाव है।

किसी भी तरह, बाद के उपयोगकर्ताओं के लिए जो इसे यहाँ देखते हैं, उदाहरण के लिए आपको दिखाते हैं कि मैं क्या कहना चाह रहा हूँ।

मामला एक

मेरी स्थानीय मशीन में कोई भिन्न चर सेट नहीं होगा। और फिर मैं -X स्विच के साथ रिमोट सर्वर पर भेजूंगा और फिर निष्पादित करने का प्रयास करूंगा xclock

Black@Black-PC ~
$ echo $DISPLAY

## the blank means that DISPLAY variable has not been specified##
Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
Last login: Tue Jun 24 22:23:13 2014 from 
[kwagjj@James5 ~]$ xclock
Error: Can't open display:
[kwagjj@James5 ~]$ setenv | grep $DISPLAY
DISPLAY: Undefined variable.

जैसा कि आप देख सकते हैं कि एक त्रुटि Error: Can't open display:दूरस्थ सर्वर टर्मिनल पर दिखाई गई है।

case2

इस बार, स्थानीय मशीन पर, मैं प्रदर्शन चर को निर्दिष्ट करूंगा। लेकिन जब मैं ssh'ing कर रहा हूं, तो मैं -X स्विच को चालू नहीं करूंगा। परिणाम एक विफलता होगी:

Black@Black-PC ~
$ export DISPLAY=:0.0

Black@Black-PC ~
$ echo $DISPLAY
:0.0

Black@Black-PC ~
$ ssh kwagjj@$labserver -p 122
Last login: Tue Jun 24 22:33:32 2014 from 
[kwagjj@James5 ~]$ xclock
Error: Can't open display:
[kwagjj@James5 ~]$ setenv | grep DISPLAY
[kwagjj@James5 ~]$ 

शुरुआत में आप देख सकते हैं कि मैंने ठीक से प्रदर्शन चर निर्धारित किया है। लेकिन फिर भी, ssh'ing (-X स्विच के बिना) के बाद xclock निष्पादित नहीं किया जाता है।

* एक अलग परिणाम setenv | grep DISPLAYयहां देखा जा सकता है (केस 1 के साथ तुलना)। case2 में, परिणाम केवल रिक्त है। दूसरी ओर, इस कमांड लाइन के लिए केस 1 का परिणाम है DISPLAY: undefined variable.... मुझे यकीन नहीं है कि यह अंतर कैसे होता है, लेकिन मुझे एक कूबड़ मिल रहा है कि क्या आप संबंधित शर्त 1 या 2 संतुष्ट हैं या नहीं ।

case3

इस बार, मैं स्थानीय मशीन पर DISPLAY चर को ठीक से निर्दिष्ट करूंगा और साथ ही मेरे -X स्विच पर दूरस्थ सर्वर के लिए ssh।

Black@Black-PC ~
$ echo $DISPLAY
:0.0

Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
Warning: untrusted X11 forwarding setup failed: xauth key data not generated
Warning: No xauth data; using fake authentication data for X11 forwarding.
Last login: Tue Jun 24 22:37:27 2014 from 
[kwagjj@James5 ~]$ xclock &
[1] 9174
[kwagjj@James5 ~]$ setenv | grep DISPLAY
DISPLAY=localhost:11.0
[kwagjj@James5 ~]$

इस सेटिंग के साथ, xclockकाम करता है !! यहाँ एक स्क्रीनशॉट साबित करने के लिए है कि मैं झूठ नहीं बोल रहा हूँ। यहाँ छवि विवरण दर्ज करें xclock को मेरी स्थानीय मशीन में सफलतापूर्वक दिखाया गया है।

फिर से, setenv | grep DISPLAYइस मामले का परिणाम देखें । यह अब पता चलता है DISPLAY=localhost:11.0। मुझे जो पता है, यह MIT-MAGIC-COOKIE के साथ .Xauthority फ़ाइल से संबंधित है, लेकिन चूंकि मुझे इस बारे में ज्यादा जानकारी नहीं है कि मैं आगे नहीं जाऊंगा।

निष्कर्ष: ऊपर के तीन मामलों से, हम पुष्टि कर सकते हैं कि दूरस्थ X विंडोज को ठीक से प्रदर्शित करने के लिए, स्थानीय मशीन के 1. प्रदर्शन चर और 2. ssh -Xस्विच को ठीक से सेट किया जाना चाहिए। बेशक, दूरस्थ सर्वर को X11forwarding की अनुमति देनी चाहिए।

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