SSH X11 को अतिरिक्त सर्वर के माध्यम से अग्रेषित करने में सक्षम कैसे करें?


33

मेरे पास मेजबान ए, बी और सी हैं। मेजबान एआई एसएच के माध्यम से केवल बी से एक्सेस कर सकता है। बीआई सी से एक्सेस कर सकता है। मैं सी पर एक्स 11 कार्यक्रम चलाने में सक्षम होना चाहता हूं और ए को आगे डिस्प्ले करना चाहता हूं।

मैंने यह कोशिश की:

$ Ssh -XB
B $ ssh -XC
C $ xclock
त्रुटि: प्रदर्शन नहीं खोल सकता:

लेकिन यह काम नहीं करता है।

जवाबों:


25

ऐसा करने के कई तरीके हैं, जो मैं पसंद करता हूं वह ssh पोर्ट को अग्रेषित करना है:

सबसे पहले, मशीन B से कनेक्ट करें और B के माध्यम से C: 22 को आगे भेजें

A$ ssh -L [localPort]:C:22 B

अगला, X11 को अग्रेषित करते हुए [लोकलपोर्ट] का उपयोग करके इस नव-निर्मित सुरंग के माध्यम से A से C से कनेक्ट करें

A$ ssh -X -p [localPort] localhost

अब हम C पर X11 प्रोग्राम चला सकते हैं और उन्हें A पर प्रदर्शित कर सकते हैं

C$ xclock

[localPort] कोई भी पोर्ट हो सकता है जिसे आप पहले से ही A पर नहीं सुन रहे हैं, मैं अक्सर सादगी के लिए 2222 का उपयोग करता हूं।


3
बिल्कुल नहीं ... यदि X11Forwarding सर्वर C पर सक्षम नहीं है, तो यह काम नहीं करेगा। यह भी तब तक काम नहीं करेगा जब तक कि कोई अनुमति नहीं देता है AllowTcpForwarding हां और गेटवेपोर्ट्स सर्वर बी पर हां। यह उत्तर बिल्कुल भी स्वीकार्य नहीं है
asdmin

आप एक अच्छा बिंदु बनाते हैं, मैंने इसे ध्यान नहीं दिया क्योंकि मैं डेबियन का उपयोग करता हूं, जिस पर X11Forwarding और AllowTcpForwarding डिफ़ॉल्ट रूप से सक्षम हैं। गेटवेपोर्ट्स की जरूरत नहीं है क्योंकि यह अक्षम है, SSH अभी भी लोकलहोस्ट पर सुनता है और हम इसे कनेक्ट कर रहे हैं। आप केवल यह आवश्यकता होगी अगर आप दूसरी मशीन ए के लिए एक बाहरी आईपी के माध्यम से कनेक्शन बनाना चाहते थे
डेव

चरण 1 पर, इसने मुझसे होस्ट बी के लिए पासवर्ड नहीं पूछा, और मैं होस्ट सी में जुड़ा हुआ हूं। एक अन्य विंडो में मैंने चरण 2 की कोशिश की और मुझे "ssh_exchange_identification: दूरस्थ होस्ट द्वारा बंद किया गया कनेक्शन" मिला।
एमएसबी

ssh: होस्ट से कनेक्ट करें ... पोर्ट 22: कनेक्शन ने पहली कमांड निष्पादित करते समय इनकार कर दिया
रोड्रिगो

7

पोर्ट अग्रेषण का उपयोग करके इसे आसानी से पूरा किया जा सकता है:

A$ ssh -NL 2022:C:22 B &
A$ ssh -X -p 2022 localhost
C$ xclock

पोर्ट लोकलहोस्ट: 2022 को C: 22 के माध्यम से B को SSH से C को स्थानीयहोस्ट के माध्यम से: 2022 को सामान्य के रूप में उपयोग किया जाता है


2
यह उन्हीं कारणों से काम नहीं करेगा जब बी (गेटवे) में कहीं और नोट किए गए सही sshd अग्रेषण विकल्प सक्षम नहीं हैं।
g33kz0r

बी को होस्ट करने के लिए मेरा पासवर्ड नहीं पूछा, जो अजीब है; और यह काम नहीं किया, मुझे त्रुटि संदेश मिला "चैनल 2: खुला विफल: प्रशासनिक रूप से निषिद्ध: खुला विफल ssh_exchange_identification: दूरस्थ होस्ट द्वारा बंद किया गया कनेक्शन"
msb

4

समस्या यह मानते हुए कि मध्य मशीन में X नहीं है, लेकिन यह अन्यथा X11 को अग्रेषित करने के लिए कॉन्फ़िगर किया गया है, बस xauth स्थापित करें।

यम-आधारित प्रणाली (फेडोरा, रेडहैट, सेंटोस) पर:

B$ sudo yum install xauth

उपयुक्त-आधारित प्रणाली (डेबियन, ubuntu) पर:

B$ sudo apt-get install xauth

Yay- बिना सिर वाली रास्पबेरी पाई के लिए एकदम सही।
सीएमसी

@ सेमी या वीपीएन की तरह ssh का उपयोग करना।
Jayen

@cmc आपके पास yumएक पाई पर है?
Jayen

nope- sudo apt-get install xauth
cmc

3

नए संस्करणों के लिए ओपनशेड आपको X11UseLocalhostइस कार्य के लिए अक्षम करना होगा।

होस्ट सी पर आपको यह करने की आवश्यकता है /etc/ssh/sshd_configऔर काम करने के लिए sshd को पुनरारंभ करें:

X11Forwarding yes
X11UseLocalhost no

2

यदि आप उपयोग किए जा रहे किसी भी sdd में X11Forwarding को अक्षम कर चुके हैं तो आप X11 डिस्प्ले को अग्रेषित नहीं कर सकते।

आदमी sshd_config:

X11Forwarding
  Specifies whether X11 forwarding is permitted. The argument must be “yes”
  or “no”.  The default is “no”.

आपको यह सुनिश्चित करना होगा कि X11Forwarding गंतव्य पर सक्षम है और आपके द्वारा उपयोग किए जा रहे सभी मध्यवर्ती sds।

बस एक छोटा संकेत: आपको वीएनसी का उपयोग करने की कोशिश करनी चाहिए, एक्स 11 डिस्प्ले अग्रेषण काफी बैंडविड्थ की खपत है।


@ AgentK और @ dave के सुझावों के लिए केवल अंतिम मेजबान पर X11Forwarding को सक्षम करने की आवश्यकता होती है, क्योंकि वे मध्यवर्ती होस्ट को बायपास करने के लिए SSH सुरंग का उपयोग करते हैं। आपका सुझाव लगभग निश्चित रूप से है कि ओपी की विधि पहले क्यों विफल रही, लेकिन इसका मतलब यह नहीं है कि अन्य लोगों के जवाब "स्वीकार्य नहीं हैं"
डैनियल लॉसन

उनके जवाब दोषपूर्ण थे और समस्या को हल किया, इसे हल नहीं किया। एक सही और उपयोगी उत्तर मूल प्रश्न पर विचार करेगा और इसे हल करेगा, और केवल मूल प्रश्न हल नहीं होने की स्थिति में अन्य तरीके प्रदान करेगा । वैसे, उनमें से किसी ने भी X11Forwarding का उल्लेख नहीं किया है, जो आवश्यक है
asdmin

कुछ सिस्टम पर डिफ़ॉल्ट " yes" है।
ब्रैड गिल्बर्ट

मैंने जाँच की, कि X11Forwarding B और C पर एनेबल है और AllowTcpForwarding बी पर हाँ पर सेट है। लेकिन मेरे कमांड का परिणाम समान है। और डेव का जवाब मेरे लिए ठीक काम करता है।
lexsys

फिर ऐसा करें, लेकिन यह केवल एक उपाय है। आप पैरामीटर '-v' के साथ ssh भी शुरू कर सकते हैं, या यह जानने के लिए सभी नेस्टेड ssh आदेशों को $ DISPLAY
आज़माएँ,

2

यदि आप अक्सर A से C तक जाते हैं, तो आप B को प्रॉक्सी के रूप में कॉन्फ़िगर कर सकते हैं:

A:~/.ssh/config:

Host C
  ForwardX11   yes
  ProxyCommand ssh -W %h:%p B

तो यह सिर्फ है:

A$ ssh C xclock

1

क्या आपने कोशिश की है

A$ ssh -Y B
B$ ssh -Y C
C$ xlclock

-य ध्वज "X11 अग्रेषण पर भरोसा करता है।"


वही परिणाम।
lexsys

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