-X फ्लैग (X11 फ़ॉरवर्डिंग) विंडोज में काम नहीं करता है


16

मैं विंडोज 8.1 में ओपन SSH (OpenSSH_6.6.1p1, OpenSSL 1.0.1i 6 अगस्त 2014) का उपयोग कर रहा हूं। X11 फ़ॉरवर्डिंग काम नहीं करता है। DISPLAY वातावरण चर सेट होने के लिए प्रकट नहीं होता है।

उदाहरण के लिए, यदि मैं कनेक्ट करने के लिए बिटवीस या पोटीन का उपयोग करता हूं, और एनवी चलाता हूं, तो मैं देखता हूं:

[marko@vm:~]$ env
XDG_SESSION_ID=6
TERM=xterm
SHELL=/bin/bash
SSH_CLIENT=192.168.1.174 61102 22
SSH_TTY=/dev/pts/0
USER=marko
MAIL=/var/mail/marko
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
PWD=/home/marko
LANG=en_CA.UTF-8
NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript
SHLVL=1
HOME=/home/marko
LANGUAGE=en_CA:en
LOGNAME=marko
SSH_CONNECTION=192.168.1.174 61102 192.168.1.64 22
XDG_RUNTIME_DIR=/run/user/1000
DISPLAY=localhost:10.0
_=/usr/bin/env

अगर मैं इसके बजाय OpenSSH (ssh -X marko @ vm) का उपयोग करता हूं:

[marko@vm:~]$ env
XDG_SESSION_ID=8
TERM=cygwin
SHELL=/bin/bash
SSH_CLIENT=192.168.1.174 61150 22
SSH_TTY=/dev/pts/1
USER=marko
MAIL=/var/mail/marko
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
PWD=/home/marko
LANG=en_CA.UTF-8
NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript
SHLVL=1
HOME=/home/marko
LANGUAGE=en_CA:en
LOGNAME=marko
SSH_CONNECTION=192.168.1.174 61150 192.168.1.64 22
XDG_RUNTIME_DIR=/run/user/1000
_=/usr/bin/env

1
एक स्पष्ट हो सकता है, लेकिन मैं आपके पोस्ट से निश्चित रूप से नहीं बता सकता हूं - क्या आपके पास वास्तव में विंडोज पर एक एक्स सर्वर स्थापित है, जैसे कि bitvise.com/ssh-x11-forwarding ?

1
हां, मेरे पास Xming X सर्वर ( straightrunning.com/xmingnotes )
abendigo

क्या आपके पास - बस चीजों का परीक्षण करने के लिए - PuTTY के साथ एक ही कोशिश की? यदि नहीं, तो मेरा सुझाव है कि इसके साथ प्रयास करें, और देखें कि क्या यह वहां काम करता है।
पोलीमोन

1
हाँ, यह पोटीन में काम करता है।
अबेंडिगो

मैं अभी अपने Windows VM की जाँच कर रहा हूँ। यह जाँचना उतना ही सरल हो सकता है कि यह कार्य करने के लिए किस प्रकार के चर पुट्टी सेट करते हैं। मैं एक दो घंटे में जवाब जोड़ दूंगा।
पोलीमोन

जवाबों:


16

क्या आपने DISPLAYक्लाइंट पर पर्यावरण चर निर्धारित किया है? मुझे यकीन नहीं है कि आप किस शेल का उपयोग कर रहे हैं, लेकिन बॉर्न शेल व्युत्पन्न (जैसे बाश) के साथ, कृपया प्रयास करें:

export DISPLAY=127.0.0.1:0
ssh -X marko@vm

या यदि आप cmd.exe का उपयोग कर रहे हैं:

set DISPLAY=127.0.0.1:0
ssh -X marko@vm

धन्यवाद, यह वही है जो मुझे याद आ रहा था! जैसे ही मुझे अनुमति दी जाएगी, मैं इनाम दूंगा।
अबेंडिगो

ध्यान दें कि मैंने रोइमा के उत्तर (नीचे) को वोट दिया क्योंकि यह बताता है कि क्यों और साथ ही सिर्फ एक उत्तर भी दे रहा है।
अज़रेई

2
तो रोइमा का जवाब बताता है कि समस्या क्यों हुई, लेकिन इससे मुझे समस्या को हल करने में मदद नहीं मिली। मैंने अपने प्रश्न में समझाया कि मैं खिड़कियां चला रहा था। ययागशी के उत्तर ने मुझे उन खिड़कियों पर प्रवेश करने की आज्ञा दी जिन्होंने मेरी समस्या को हल किया। इसीलिए मैंने इस उत्तर को चुना।
abendigo

मैंने इस उत्तर को वोट करने के लिए एक खाता पंजीकृत किया। मैंने यहाँ पहुँचने से पहले बहुत समय तक इंटरनेट पर खोज की थी।
रियो विंग

3
यह समाधान मेरे लिए काम नहीं करता है। set DISPLAY=anythingइसके बाद ssh -X user@remoteरिटर्न के CreateProcessW failed error:2 ssh_askpass: posix_spawn: No such file or directory Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).साथ पर्यावरण चर को परेशान करना set DISPLAY=मुझे फिर से सफलतापूर्वक एसएचएस करने की अनुमति देता है, लेकिन एक्स अग्रेषण के बिना काम करना। इससे मुझे कोई मतलब नहीं है कि DISPLAY सेट करने के लिए सॉफ़्टवेयर को मेरे पासवर्ड के लिए इस तरह से पूछना चाहिए। github.com/PowerShell/Win32-OpenSSH/issues/1088 github.com/PowerShell/Win32-OpenSSH/issues/1088
पावेल कोमारोव

14

जब आप दौड़ते हैं ssh -X remotehostऔर आप DISPLAY=localhost:10दूरस्थ मेजबान के सामने प्रस्तुत होते हैं। सर्वर पता निर्धारित करने sshके DISPLAYलिए अपने मूल मूल्य का उपयोग करके, उस पोर्ट पर और कॉलिंग सिस्टम पर वापस ट्रैफ़िक सुनता है ।

यह संभव है कि आपके स्थानीय सिस्टम पर आपको मिल गया हो DISPLAY=:0। या यदि आपने ऐसा नहीं किया है, तो इसे डिफ़ॉल्ट रूप में देखा जा रहा है। यह प्रदर्शन के साथ संवाद करने के लिए UNIX डोमेन सॉकेट का उपयोग करने के लिए स्थानीय प्रणाली को निर्देश देता है। दुर्भाग्य Xmingसे विंडोज पर यह सेट नहीं है कि UNIX डोमेन सॉकेट तो sshइस तरह की त्रुटि के साथ आपका X11 अग्रेषण विफल रहता है:

$ export DISPLAY=:0
$ ssh -X remotehost xlogo
connect /tmp/.X11-unix/X0: No such file or directory
Error: Can't open display: localhost:10.0

ठीक - कम से कम जहाँ तक Xmingजाता है - काफी सरल है। DISPLAYUNIX डोमेन सॉकेट के बजाय सुनने वाले टीसीपी सॉकेट को संदर्भित करने के लिए चर को संशोधित करें ।

$ export DISPLAY=localhost:0
$ ssh -X remotehost xlogo

आपको Xmingस्थानीय TCP पोर्ट 6000 पर सुनने के लिए अपने कॉन्फ़िगरेशन को अनुकूलित करना पड़ सकता है । यहां बताया गया है कि मैं कैसे शुरू करता हूं Xming:

Xming.exe :0 -clipboard -multiwindow

और यहाँ पुष्टि करने के लिए सबूत है कि Xmingपोर्ट टीसीपी / 6000 पर सुन रहा है:

$ netstat -na | grep ':6000 .*LISTEN'
  TCP    0.0.0.0:6000           0.0.0.0:0              LISTENING

धन्यवाद, मुझे यह सटीक समस्या थी! मुझे नहीं पता था कि: 0 का मतलब है कि कनेक्शन एक सॉकेट पर किया गया है। मैंने हमेशा सोचा था कि स्थानीयहोस्ट के लिए इसका शॉर्टहैंड: 0।
एंड्रियास रैस्टर

मुझे उबंटू के लिए विंडोज और एक्समिंग के लिए बैश के साथ एक ही समस्या थी, और इसने इसे हल किया! मुझे सिर्फ DISPLAY सेट करना था localhost:0
बेन रिचर्ड्स

कोई विचार क्यों DISPLAY=:0WSL + XMing के लिए ठीक काम करता है xeyes, लेकिन के लिए नहीं ssh -X? क्या ssh -Xअन्य स्थानीय X11 ग्राहकों से $ DISPLAY की व्याख्या अलग है? क्या अन्य X11 क्लाइंट स्वचालित रूप से वापस आ जाते हैं localhost:0लेकिन ssh -Xऐसा नहीं होता है?
मार्कस कुह्न

इस पर man Xवह कहता है कि DISPLAY =: 0 में खाली होस्टनाम "सबसे कुशल स्थानीय परिवहन को चुना जाएगा।" ऐसा ssh -Xकहने के लिए तुलना करने के लिए एक अलग एल्गोरिथ्म का उपयोग किया जा सकता है xeyes?
मार्कस कुह्न

@MarkusKuhn शायद WSL + Xming Cygwin + Xming के लिए अलग है। मैं देखता हूं कि मैं अब इसका उपयोग कर रहा हूं DISPLAY=:0और ssh -Xखुशी से आगे बढ़ रहा हूं ।
रोज़ा

1

Windows10 और Xming में ssh के साथ, मुझे "अच्छा" (?) परिणाम प्राप्त होता है:

set DISPLAY=localhost:0

और एक वस्तु C: \ dev \ tty जैसे बना रहा है

mkdir \dev
echo x > \dev\tty

और का उपयोग कर ssh -Y(नहीं ssh -X)।


यह भी देखें / इसके बजाय, या तो / दोनों github.com/PowerShell/Win32-OpenSSH/issues/1088 github.com/PowerShell/Win32-OpenSSH/issues/966
Paul Szoo
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.