जवाबों:
आप 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
दुर्भाग्य से, ssh
X11 (या अन्य) अग्रेषणों को उस प्रक्रिया / सत्र में शामिल नहीं किया गया है जो इसे शुरू किया था या उपयोगकर्ता को यह रिमोट मशीन पर चलता है (जैसे। यूनिक्स सॉकेट का उपयोग करके / बाहर की जाँच क्रेडेंशियल्स के साथ, या नेमस्पेस का उपयोग करके)। और वे अग्रेषण सरल tcp सुन सॉकेट हैं जिनसे कोई भी रिमोट मशीन कनेक्ट कर सकता है; 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.
$DISPLAY
Envvar सेट करें और स्थानीय से दूरस्थ मशीन में सामान्य जानकारी जोड़ें:
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 सर्वर के लिए एक गैपिंग छेद नहीं खोलना चाहती।
-X
क्या यह थोड़ा बेहतर -Y
होगा?
-X
केवल साथ काम नहीं करते हैं -Y
। लोग ध्यान नहीं देते क्योंकि कई सिस्टम पर (जैसे। डेबियन) डिफ़ॉल्ट रूप ForwardX11Trusted
से सेट किया yes
गया है, -X
और -Y
विकल्प समतुल्य हैं ;-)
change $DISPLAY to
। वर्तमान प्रश्न शीर्षक खोज परिणामों में पूर्ण रूप से प्रदर्शित नहीं किया जा सकता है, और $ DISPLAY को बदलना वास्तव में उत्तर का हिस्सा है, प्रश्न का हिस्सा नहीं है।