मध्यवर्ती मेजबान के माध्यम से सुरक्षित रूप से सुरंग बंदरगाह


23

मैं यहाँ VNC के लिए अपने घर के लिए एक बंदरगाह का मार्ग देख रहा हूँ। मुझे अपनी वास्तविक कार्य मशीन के लिए एक ही मेजबान पर कूदना होगा।

  • sittinghere मेरी स्थानीय घरेलू मशीन होगी
  • hopper मध्यवर्ती हॉप द्वारा मुझे बनाने की आवश्यकता होगी
  • overthere रिमोट वर्क मशीन होगी

मैं अपने कार्य मशीन में SSH के लिए यह कर सकता हूं:

ssh -t hopper "ssh -t overthere"

मैं पोर्ट का उपयोग आगे पोर्ट 5900 पर overthereस्थानीय पोर्ट 5900 पर अग्रेषित करने के लिए करना चाहूंगा sittinghere। हालाँकि, मैं इसे पोर्ट पर बिना किसी बंधन के खुले तौर पर करने में सक्षम होना पसंद करूंगा hopperक्योंकि उस मशीन पर कोई भी मेरा एनसीआर कनेक्शन संलग्न कर सकेगा।

क्या मेरे पास अपनी स्थानीय मशीन को सुरक्षित रूप से पोर्ट करने के लिए आगे बढ़ने का कोई रास्ता नहीं है, जिस पर कोई भी उस तक पहुंचने में सक्षम नहीं है hopper?


क्या आप उपयोग कर रहे हैं VNC क्लाइंट?
स्लम

जवाबों:


18

आगे के बंदरगाहों के लिए SSH की मूल क्षमता का उपयोग करना। से sittinghereनिष्पादित करें:

 ssh -v -N -L 5900:overthere:5900 user@hopper

अपने VNC क्लाइंट को इंगित करें localhost:5900और उस overthere:5900पर स्थापित SSH कनेक्शन के माध्यम से ट्रैफ़िक को टनल किया जाएगाhopper


1
AFAIK, यह समाधान आपकी मदद नहीं करेगा यदि 5900 केवल स्थानीय (127.0.0.1) इंटरफ़ेस पर बंधा हो, जैसा कि सुरंग के लिए होता है hopper, और फिर hopperसभी ट्रैफ़िक को आगे की ओर overthere:5900। यदि दिए गए इंटरफ़ेस overthere:5900पर 0.0.0.0या सुन रहा है, तो यह काम करेगा, लेकिन अगर यह नहीं सुन रहा है 127.0.0.1
Naftuli Kay

18

मैंने ~/.ssh/configऐसा करने के लिए कुछ SSH हैक्स का उपयोग करके समाप्त किया :

Host hopper
    User naftuli
    ForwardAgent yes

Host overthere
    User naftuli
    ForwardAgent yes
    ProxyCommand ssh -q hopper nc overthere 22

क्या यह करता है कि जब मैं करने के लिए कनेक्ट करने का प्रयास है ssh overthereसे sittinghere, यह उससे कनेक्ट hopperऔर फिर आगे बंदरगाह से 22 SSH कनेक्शन प्रॉक्सी overthere(: पर SSH यानी overthere)।

इसके कुछ भयानक दुष्प्रभाव हैं:

ssh -L 5900:localhost:5900 overthere "x11vnc -display :0 -localhost"

सब कुछ कमाल का काम करता है और जहां तक ​​मैं बता सकता हूं, 5900 पर खोला नहीं गया है hopper, केवल सीधे से आगे भेजा गया overthereहै sittinghere


संयोग से, मुझे पहले टिप्पणियों में यह पूछना चाहिए था लेकिन जिस समाधान में आपने ठोकर खाई, वह x11nvc मैन पेज 8- से बाहर है)। क्षमा करें, मैंने यह पूछने के लिए नहीं सोचा कि आप कौन से VNC सर्वर का उपयोग कर रहे हैं।
स्लम

यह मुझ से बेजियस को डराता है, लेकिन यह निश्चित रूप से काम करता है!
डेल एंडरसन

1
कुछ लिनक्स डिस्ट्रोस (जैसे Ubuntu 14.04) में netcat-openbsd डिफ़ॉल्ट रूप से स्थापित होता है। इस स्थिति में यह हैक काम नहीं कर सकता है। इस समस्या को ठीक करने के लिए आपको सबसे पहले netcat-पारंपरिक पैकेज ( apt-get install netcat-traditional -y) स्थापित करना चाहिए । फिर आपको ncकॉन्फ़िगरेशन फ़ाइल में प्रकार को स्पष्ट रूप से निर्दिष्ट करना चाहिए (इसके ncसाथ प्रतिस्थापित करके nc.traditional)।
VeLKerr

@ नैफुली: बहुत बढ़िया!
चला गया

1
@AlexanderPozdneev netcat
taylorthurlow

1

आप से एक बंदरगाह अग्रेषित कर सकते हैं sittinghereकरने के लिए overthereके माध्यम से की SSH बंदरगाह hopper। फिर आप उस पोर्ट का उपयोग overthereसीधे से करने के लिए कर सकते हैं sittinghere। इस दूसरे SSH सत्र में आप VNC या जो भी अन्य पोर्ट पसंद करते हैं, को अग्रेषित कर सकते हैं जबकि hopperकेवल एक एन्क्रिप्टेड SSH सत्र देखता है।

पहला एसएसएच सत्र:

ssh -f -N -L 7022:overthere:22 hopper

अब SSH क्लाइंट को बताएं कि वह overthereइस कॉन्फिगर को ~/.ssh/configऑन करके कैसे पहुंच सकता हैsittinghere

Host overthere
    HostName hopper
    Port 7022
    HostKeyAlias overthere

दूसरा एसएसएच सत्र:

ssh -f -N -L 5900:localhost:5900 overthere

या VNC पोर्ट सुरंग के बिना सिर्फ एक नियमित इंटरैक्टिव SSH सत्र:

ssh overthere

यदि आप लाइनों को जोड़ने की जहमत नहीं उठाना चाहते ~/.ssh/configहैं, तब भी आप इसे बता सकते हैं overthereकि कमांड लाइन से कैसे जुड़ा जाए :

ssh -p 7022 hopper

... लेकिन बिना HostKeyAliasएसएसएच overthereसही तरीके से कुंजी के फिंगरप्रिंट को सत्यापित नहीं करेगा ।

सभी कमांड लाइन से चलाए जाने हैं sittinghere

संयोग से, मैं आप शायद का उपयोग करने की जरूरत नहीं है लगता है sshके -tविकल्प।


1

वर्कर और होम पीसी के बीच सुरंग बनाते समय पहले हॉपर को कनेक्ट करें।

ssh -f ismail@hopper -L 2222:overthere:22 -N

फिर vnc सुरंग के साथ ssh आरओ को उखाड़ फेंकें

ssh -p 2222 -f ismail@localhost -L 5900:localhost:5900

अब आप vnc से जुड़ सकते हैं। वैसे vnc का कॉन्फ़िगरेशन बदलने के लिए लोकलहोस्ट को सुनें


0

यदि आप vncviewerकमांड लाइन से VNC क्लाइंट का उपयोग कर रहे हैं, तो आप किसी अन्य होस्ट के VNC सर्वर से कनेक्ट करने से पहले -viaइसे सुरंग के माध्यम से बताने के लिए स्विच का उपयोग कर सकते हैं user@host

उदाहरण

$ vncviewer -via user@host localhost:0

आप vinagreGUI के माध्यम से SSH सुरंग के माध्यम से कनेक्ट करने के लिए भी उपयोग कर सकते हैं । ऐसा करने के लिए कनेक्शन डायलॉग के माध्यम से अपना कनेक्शन इस तरह सेट करें vinagre:

              ss # १

जिसके परिणामस्वरूप आपका कनेक्शन एसएसएच टनल होस्ट के माध्यम से आ जाएगा।

    ss # 2

संदर्भ


0

निम्नलिखित आदेश भी पूरी तरह से काम करना चाहिए

ssh -f -N -J hopper overthere -L 5900:localhost:5900

पोस्टग्रेएसक्यूएल सर्वर को postgres-serverकस्टमाइज्ड पोर्ट ( -pस्विच) पर जोड़ने के लिए और साथ ही कस्टमाइज्ड यूजरनेम का उपयोग करने के लिए अतिरिक्त पैरामीटर के साथ इसका परीक्षण किया गया ।

ssh -f -N -J user1@jumphost -p 2222 user2@postgres-server -L 5432:localhost:5432

जैसा कि आप देख सकते हैं कि समाधान सरल है और इसे ssh या किसी भी मध्यवर्ती चरणों के किसी भी कॉन्फ़िगरेशन परिवर्तन की आवश्यकता नहीं है।

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