SSH सुरंग के माध्यम से SSH को अग्रेषित करें


30

मेरी स्थिति :

मुझे (लोकलहोस्ट) -> सर्वर ए (आईपी: 100.100.100.100) => (सर्वर बी (आईपी: 192.168.25.100), सर्वर ....)

मैं सर्वर में एसएसएच करने में सक्षम हूं क्योंकि इसमें एक सच्चा आईपी है यदि मैं सर्वर बी से कनेक्ट करना चाहता हूं, तो मैं सर्वर बी को आईपी (192.168.25.100) के साथ भेज दूंगा

उदाहरण:

मेरे पीसी से:

ssh user@100.100.100.100

फिर 100.100.100.100 में,

ssh user@192.168.25.100

यह मुझे ssh के साथ सर्वर B में मिलेगा

क्या होगा अगर मैं सीधे सर्वर बी से कनेक्ट करना चाहता हूं? मैं उसे कैसे कर सकता हूँ?

उदाहरण:

मेरे सागर से:

ssh@192.168.25.100

मैंने निम्नलिखित कोशिश की है:

ssh -L 22:localhost:22 user@100.100.100.100

सफलता के बिना

जवाबों:


30

आपकी समस्या एक श्रोता को लोकलहोस्ट के लिए बाध्य करने में है: 22; वहाँ पहले से ही एक sshd उस पर सुन रहा है। एक ssh कनेक्शन के माध्यम से एक ssh कनेक्शन को सुरंग बनाना पूरी तरह से वैध है, और मैं इसे हर समय करता हूं, लेकिन आपको अपने अग्रगामी श्रोताओं के लिए अप्रयुक्त बंदरगाहों को चुनने की आवश्यकता है।

प्रयत्न

me% ssh user@100.100.100.100 -L 2201:192.168.25.100:22

फिर

me% ssh localhost -p 2201

आपको सर्वर बी पर समाप्त होना चाहिए (जब तक कि कुछ मेरे लिए पहले से ही बाध्य न हो: 2201, जिस स्थिति में, दूसरा पोर्ट चुनें)।


जल्दी जवाब देने का शुक्रिया! यह काम करता है, हालांकि, मैं केवल ssh (22) के बजाय सभी कनेक्शन कैसे अग्रेषित कर सकता हूं?
tom91136 12

1
यह एक पूर्ण विकसित वीपीएन है जिसे आप केवल पोर्ट-फ़ॉरवर्डिंग के लिए देख रहे हैं। Bodhizazen.net/Tutorials/VPN-Over-SSH पर vpn-over-ssh कैसे करें , इस पर एक राइटअप है , लेकिन इसे A. पर ssh के माध्यम से रिमोट रूट एक्सेस की आवश्यकता होती है या आप OpenVPN या अन्य वीपीएन समाधानों को देख सकते हैं, लेकिन फिर से ये काम करने के लिए आपको A के विशेषाधिकार की आवश्यकता होगी।
MadHatter

बहुत बहुत धन्यवाद, एक आखिरी बात, क्या होगा अगर मैं केवल ए से कनेक्ट करना चाहता हूं?
tom91136

me% ssh user@100.100.100.100; क्या हमने पहले से ही कवर नहीं किया था? या क्या आपका मतलब है "क्या होगा अगर मैं एक पूर्ण विकसित वीपीएन को ए चाहता हूं?", जिस स्थिति में मेरा जवाब खड़ा है।
MadHatter

1
जो लोग एसएसएच से अधिक वीपीएन चाहते हैं, उनके पास सर्वर पर रूट एक्सेस नहीं है, लेकिन इसमें पायथन है, sshuttle कोशिश करें
आंद्रे परमेस

23

प्रॉक्सी के माध्यम से आंतरिक कंप्यूटर में ssh पोर्ट अग्रेषित करने के लिए आपको ssh पोर्ट का उपयोग करने की आवश्यकता नहीं है। आप एक 3 कंप्यूटर में ssh करने के लिए आपके द्वारा कनेक्ट होने वाले पहले सर्वर पर एक कमांड निष्पादित करने की ssh सुविधा का उपयोग कर सकते हैं।

ssh -t user@100.100.100.100 ssh user@192.168.25.100

-tविकल्प बलों ताकि आप एक इंटरैक्टिव कमांड चला सकते हैं एक छद्म tty आवंटित करने के लिए ssh।

यह ssh कीज़ के साथ भी काम कर सकता है। यदि आपके पास मशीन A पर आपकी निजी और सार्वजनिक कुंजी और मशीनों B और C पर अधिकृत कुंजी फ़ाइलों में आपकी सार्वजनिक कुंजी है, तो आप -Aप्रमाणीकरण एजेंट कनेक्शन को अग्रेषित करने के लिए विकल्प का उपयोग कर सकते हैं ।


10

मैंने एक अलग समाधान का उपयोग किया। मैंने एक ProxyCommandविकल्प का उपयोग किया (यहां ~/.ssh/config):

Host myinsidehost1 myinsidehost2 myinsidehost3
ProxyCommand ssh externalhost ssh %h sshd -i

यह किसी भी पोर्ट-टू-पोर्ट सुरंग की स्थापना नहीं करता है, इसके बजाय मानक स्टडिन / आउट का उपयोग करके सुरंगों को एसएच। इस पद्धति में एक खामी है कि प्रमाणित करने के लिए वास्तव में तीन ssh कनेक्शन हैं। लेकिन आंतरिक होस्ट से कनेक्ट करने के लिए आप केवल टाइप करें:

ssh myinsidehost2

... तो आपको उस सुरंग के लिए कोई भी आईपी चुनने की परवाह करने की जरूरत नहीं है।


1
यह SSH स्टैकिंग का एकमात्र प्रकार है जो मुझे काम करने में लगता है। मुझे कोशिश की गई है corkscrewया nc( netcat) लेकिन कोई भी इस तरह मूल रूप से काम नहीं करता है।
फुओंग गुयेन

7

ssh मैन पेज के अनुसार, ProxyCommand सही तरीका है

वाक्य रचना:

ProxyCommand ssh -W %h:%p user@jumphost 2> /dev/null

मुझे यकीन नहीं है कि -Wजब इस सवाल का जवाब दिया गया था तो विकल्प मौजूद था। लेकिन ssh क्लाइंट के नए संस्करणों के साथ, मैं मानता हूं कि संयोजन ProxyCommandऔर -Wपसंदीदा तरीका है। हो सकता है कि दोनों को दिखाते हुए कुछ संदर्भ जोड़ें कि इसे कमांड लाइन पर कैसे इस्तेमाल किया जा सकता है और साथ ही एक अनुभाग के लिए उदाहरण भी दिया जा सकता है .ssh/config
कैस्परल्ड

कोई भी विचार जहां चेंजलॉग्स / संस्करण की जानकारी प्राप्त करना है जो हमें बताता है कि एसएसएच के किन संस्करणों में -Wकमांड है और जो नहीं है? थोड़ी सी गुगली ने मेरे लिए जल्दी से जवाब नहीं दिया ...
dmh

-Wओपनएसएसएच 5.4 के साथ पेश किया गया, 2010 में जारी किया गया। तो इसका उत्तर है हां @kasperd
0xC0000022L

7

OpenSSH 7.3 (2016 के अंत में) सबसे आसान तरीका है ProxyJump सेटिंग। अपने में ~/.ssh/config:

Host B
  ProxyJump A

या कमांड लाइन पर,, -J B

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