`Ssh` के बिना` -X` के बाद एक मशीन से, `ssh -X` की तरह काम करने के लिए` $ DISPLAY` को बदलना संभव है?


22

मशीन के sshबिना के बाद -X, क्या यह काम करने के लिए कुछ सेटिंग्स (उदाहरण के लिए $DISPLAY) को बदलना संभव है ssh -X? यदि नहीं, तो क्या कारण है? धन्यवाद।


मैं सुझाव देता हूं कि बाहर निकलकर प्रश्न शीर्षक को छोटा बनाइए change $DISPLAY to। वर्तमान प्रश्न शीर्षक खोज परिणामों में पूर्ण रूप से प्रदर्शित नहीं किया जा सकता है, और $ DISPLAY को बदलना वास्तव में उत्तर का हिस्सा है, प्रश्न का हिस्सा नहीं है।
दिमित्री ग्रिगोरीव

जवाबों:


33

आप X11 अग्रेषण सक्षम के साथ दूसरा कनेक्शन बना सकते हैं, और फिर आप DISPLAYपहले में दूसरे कनेक्शन से पर्यावरण चर का उपयोग भी कर सकते हैं ।

पहली खिड़की में:

$ ssh user@host
user@host$ ...

दूसरी विंडो में:

$ ssh -Y user@host 'echo $DISPLAY; while sleep 3600; do :; done'
localhost:10.0

पहली खिड़की पर वापस:

user@host$ export DISPLAY=localhost:10.0
user@host$ xterm

दुर्भाग्य से, sshX11 (या अन्य) अग्रेषणों को उस प्रक्रिया / सत्र में शामिल नहीं किया गया है जो इसे शुरू किया था या उपयोगकर्ता को यह रिमोट मशीन पर चलता है (जैसे। यूनिक्स सॉकेट का उपयोग करके / बाहर की जाँच क्रेडेंशियल्स के साथ, या नेमस्पेस का उपयोग करके)। और वे अग्रेषण सरल tcp सुन सॉकेट हैं जिनसे कोई भी रिमोट मशीन कनेक्ट कर सकता है; X11 अग्रेषण की सभी सुरक्षा X11 प्रमाणीकरण पर निर्भर करती है।

X11 हाथ से अग्रेषित करना

sshd_config(5)मैनपेज कहा गया है कि:

X11 अग्रेषण को अक्षम करना उपयोगकर्ताओं को X11 ट्रैफ़िक को अग्रेषित करने से नहीं रोकता है, क्योंकि उपयोगकर्ता हमेशा अपने स्वयं के फ़ॉरवर्डर स्थापित कर सकते हैं।

यहाँ है कि आप हाथ से कैसे कर सकते हैं।

सबसे पहले, किसी भी होस्ट-या उपयोगकर्ता-आधारित अभिगम नियंत्रण को अक्षम करना सुनिश्चित करें जो x11 यांत्रिकी तंत्र को बायपास करता है [1]

$ xhost $(xhost | sed -n /:/s/^/-/p)
access control enabled, only authorized clients can connect

फिर DISPLAY=:0स्थानीय मशीन के लिए सामान्य जानकारी दिखाएं :

$ xauth list :0
ohzd/unix:0  MIT-MAGIC-COOKIE-1  a86982ddce0c1e1c1a8c5e8b2846e43b

किसी भी X11 अग्रेषण के बिना दूरस्थ मशीन से कनेक्ट करें:

$ ssh user@hzy64
user@hzy64's password:
[motd snipped]

के माध्यम से कमांड लाइन खोलें ~Cऔर बंदरगाह से एक दूरस्थ अग्रेषण जोड़ने 6000+43यूनिक्स सॉकेट प्रदर्शन करने के लिए इसी के लिए :0:

hzy64$~C
ssh> -R 6043:/tmp/.X11-unix/X0
Forwarding port.

$DISPLAYEnvvar सेट करें और स्थानीय से दूरस्थ मशीन में सामान्य जानकारी जोड़ें:

hzy64$ export DISPLAY=localhost:43
hzy64$ xauth add $DISPLAY . a86982ddce0c1e1c1a8c5e8b2846e43b
xauth:  file /home/user/.Xauthority does not exist

अब आप जाने के लिए तैयार हैं:

hzy64$ xterm

[1] गुमराह बगफिक्स के कारण , उपयोगकर्ता-आधारित अभिगम नियंत्रण को डेबियन के माध्यम से डिफ़ॉल्ट रूप से चालू किया जाता है /etc/X11/Xsession.d/35x11-common_xhost-local। इससे भी बदतर, यह XWayland में डिफ़ॉल्ट रूप से एकमात्र उपलब्ध है जहां इसे बंद नहीं किया जा सकता है । कोई भी प्रोग्राम जो X11 प्रोटोकॉल की समीपता है (जैसे। xscope) को अपनी खुद की X11 ऑर्टिकल कुकी जाँच (जिस तरह से ssh करता है) करनी होगी, जब तक कि वह X11 सर्वर के लिए एक गैपिंग छेद नहीं खोलना चाहती।


1
यदि आप सुरक्षा की परवाह करते हैं, तो -Xक्या यह थोड़ा बेहतर -Yहोगा?
स्टीफन किट

13
कई (सबसे?) X11 प्रोग्राम -Xकेवल साथ काम नहीं करते हैं -Y। लोग ध्यान नहीं देते क्योंकि कई सिस्टम पर (जैसे। डेबियन) डिफ़ॉल्ट रूप ForwardX11Trustedसे सेट किया yesगया है, -Xऔर -Yविकल्प समतुल्य हैं ;-)
मॉवी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.