पोर्ट अग्रेषण के बिना एक राउटर के माध्यम से ssh


11

मेरे पास एक लिनक्स सर्वर है, और मैं इसे एक राउटर के पीछे एक होम नेटवर्क में रखना चाहता हूं। मुझे कुछ समय के लिए इस सर्वर पर ssh करने की आवश्यकता है, लेकिन मैं पोर्ट फ़ॉरवर्डिंग सेट नहीं करना चाहता क्योंकि मेरे पास राउटर तक पहुंच नहीं है, और मुझे राउटर का आईपी भी नहीं पता है।

मैं लिनक्स प्रोग्राम में कुछ प्रोग्राम डालने के लिए क्या कर सकता हूं, इसलिए जब यह इंटरनेट से जुड़ा होता है, तो यह लगातार मेरे दूसरे सर्वर पर डेटा भेजेगा ताकि मुझे इसका आईपी पता पता हो। लेकिन क्या बाहर से राउटर के पीछे सर्वर पर ssh करने का एक तरीका है? नेट या सॉकेट जैसी कोई चीज जो नेटवर्क कनेक्शन को बनाए रखती है?

बहुत बहुत धन्यवाद

जवाबों:


24

आप जो करना चाहते हैं, वह अपने "linux server" से ssh है। बाहर की किसी चीज़, जैसे "my_other_server" या कुछ और दोनों सर्वरों से प्राप्त कर सकते हैं।

आप ssh रिमोट पोर्ट फ़ॉरवर्डिंग का उपयोग करेंगे।
[user@linux_server]$ ssh -R8022:localhost:22 my_other_server.com
स्पष्टीकरण: my_other_server से कनेक्ट करें और 8022 पोर्ट खोलें, जो पोर्ट 22 पर मेरे पास वापस भेज देगा।

My_other_server.com से आप पोर्ट 8022 पर लोकलहोस्ट करने में सक्षम होंगे, और अपने ट्रैफ़िक को linux_server पर गुल्लक से आगे बढ़ाएंगे -> my_other_server सुरंग [user@linux_server]$ ssh -p8022 localhost
विवरण: पोर्ट 8022 पर खुद से कनेक्ट करें जो linux_server के लिए भेजा गया है

यदि आपको प्रारंभिक linux_server के साथ समस्या है -> my_other_server सुरंग को छोड़ने पर, आप इसे खुला रखने के लिए एक स्क्रिप्ट बना सकते हैं, रखने की सेटिंग्स समायोजित कर सकते हैं, या autossh का उपयोग कर सकते हैं।


1
धन्यवाद, यह बहुत अच्छा काम करता है! मैं इसे खुला रखने के लिए स्क्रिप्ट का उपयोग करना चाहता हूं। दूसरा सवाल यह है कि अगर मुझे 1000 ऐसे 'लिनक्स सर्वर' पसंद हैं और केवल एक 'my_other_server' है, तो क्या मैं उनमें से किसी को भी इस तरह से ssh कर सकता हूं? मुझे लगता है कि उन सभी को अलग-अलग बंदरगाह की आवश्यकता है और क्या ऐसा करने का एक बेहतर तरीका है?
जिएचो ली

खैर यह निर्भर करता है। अब जब आप linux_server पर हैं, तो क्या आप linux_server2 और linux_server3 को वहां से भेज सकते हैं? यह सबसे आसान होगा। तो हाँ आप इसे कई बार कर सकते हैं, 8022 का उपयोग करने के बजाय आप 8023, 8024 का उपयोग करेंगे। यदि आप उस मार्ग पर जाते हैं, तो "my_other_server" पर एक ~ / .ssh / config फ़ाइल बनाएं जिसमें सभी पोर्ट नंबर हों, इसलिए आप बस ssh [पोर्ट] लोकलहोस्ट के बजाय [उर्फ] ssh करें। वह बोझिल हो जाएगा।
मैटपार्क

1
क्या केवल दो मशीनों के साथ इसे स्थापित करना संभव है? B से A, A से B से स्वयं से कनेक्ट करें?
adamyonk

1
मैंने अभी ये किया। पुष्टि कर सकता है कि यह काम करता है। \ / ओ /
adamyonk

हाँ यार --- जाहिर है आपने इसका पता लगा लिया। आप autosshइसे खुला रखने के लिए कुछ का उपयोग कर सकते हैं ।
मैटपार्क

3

आप इस कार्य को प्राप्त करने के लिए एक प्रकार के वीपीएन का उपयोग कर सकते हैं, लेकिन इसके लिए आपको एक सर्वर की आवश्यकता होगी जिसे दुर्गम सर्वर तक पहुँचा जा सके। फिर आप सर्वर, अपने पीसी, और फ़ायरवॉल सर्वर पर OpenVPN सेट कर सकते हैं, सक्षम client-to-clientकर सकते हैं, और आप कर रहे हैं। http://openvpn.net/howto.html


धन्यवाद। मैं इस पर गौर कर रहा हूं, लेकिन यह थोड़ा जटिल है। अगर मुझे सही तरीके से समझ में आता है, तो मुझे दोनों सर्वर पर OpenVPN स्थापित करने की आवश्यकता है ताकि वे राउटर को कॉन्फ़िगर किए बिना संवाद कर सकें, है ना?
जिएचो ली

बिल्कुल सही। आप किसी सर्वर को "सर्वर" के रूप में कॉन्फ़िगर करते हैं, फिर आप जिस दो क्लाइंट को एक साथ कनेक्ट करना चाहते हैं उसे "क्लाइंट" के रूप में कॉन्फ़िगर करना है। हालांकि, ऊपर उल्लिखित SSH आपके लिए आसान प्रतीत होता है, हालाँकि।
नाथन सी

3

यह उत्तर स्वीकृत एक पर आधारित है, लेकिन उन विवरणों को जोड़कर जो मुझे इसे पूरा करने की अनुमति देते हैं। मैं पैदल यात्री स्पष्टीकरण के लिए माफी मांगता हूं, क्योंकि यह मेरी विशेषज्ञता में नहीं है।

मान लीजिए कि आपके पास दो कंप्यूटर हैं, Aऔर B। आप करना चाहते हैं sshसे Aकरने के लिए B, और आप उन से जुड़े रूटर्स में किसी भी पोर्ट अग्रेषण नहीं कर सकते।

जैसा कि स्वीकृत उत्तर बताता है, आपको Sऐसा करने के लिए एक सर्वर की आवश्यकता है : कंप्यूटर में B, आप sshकनेक्शन से आने की अनुमति देंगे S; और कंप्यूटर से A, आप उस सुरंग Sतक पहुँचने के लिए उपयोग करेंगे B

लेकिन आप उस सर्वर को कैसे प्राप्त करते हैं S? मैंने पाया serveo(लिंक: https://erveo.net/ )। यह बहुत ही सरल उपयोग है। आपको कुछ भी स्थापित करने या पंजीकरण करने की आवश्यकता नहीं है और यह मुफ़्त है। वेबसाइट के अनुसार, निम्नलिखित चरणों का पालन करें:

  1. कंप्यूटर के लिए एक उपनाम के बारे में सोचो B। उदाहरण के लिए, computer_B_alias

  2. कंप्यूटर में B, निष्पादित करें ssh -R computer_B_alias:22:localhost:22 serveo.net

  3. अब, आप कंप्यूटर में निम्नलिखित को निष्पादित करके कंप्यूटर Bसे कंप्यूटर तक पहुंच सकते Aहैं A: ssh -J serveo.net user@computer_B_aliasजहां आपको userकंप्यूटर में उपयोगकर्ता के नाम से स्थानापन्न करना होगा B

पुनश्च: बेशक, आप अपना कंप्यूटर शुरू करते समय बिंदु 2 को एक स्वचालित कार्य बनाते हैं B

PSS: इससे पहले कि आप यह प्रयास करें, सुनिश्चित करें कि sshदोनों कंप्यूटरों में स्थापित है। उबंटू के लिए, sudo apt-get install sshकाम करना होगा।


1
धन्यवाद, यह लापता लिंक था जिसकी मुझे आवश्यकता थी। नोट रेफ़ियो नीचे लगता है। मुझे ये दोनों विकल्प उपयोगी नहीं लगे: ngrok & localhost.run !
DannyDannyDanny

1

लंबे समय तक जवाब देने के लिए। यह किसी ऐसे व्यक्ति की मदद कर सकता है जो अब उसी के लिए देख रहा है।

यदि आप NAT के पीछे एक सर्वर का उपयोग करना चाहते हैं और आप कोड लिखना नहीं चाहते हैं, तो आप संभवतः नीचे दिए गए टूल के लिए जा सकते हैं और अपनी आवश्यकता के अनुसार जो भी सूट हो उसका उपयोग कर सकते हैं।

उपरोक्त दोनों उपकरण यह मानते हैं कि आपके पास अपने ग्राहक को स्थापित करने के लिए लिनक्स मशीन की पहुंच है, उनके कुछ लाभ हैं:

  • दोनों आपको वेब इंटरफेस का उपयोग करके टर्मिनल तक पहुंच प्रदान करते हैं
  • आपको अपने स्वयं के एक मध्यवर्ती रिवर्स एसश होस्ट की आवश्यकता नहीं है।
  • स्थापित करने के लिए बहुत आसान है
  • दोनों ओपन सोर्स हैं

मैं व्यक्तिगत रूप से टमेट को अधिक पसंद करता हूं क्योंकि आप अपने स्वयं के मध्यवर्ती सर्वर (रिवर्स एसश के लिए) पर टमेट सर्वर को होस्ट कर सकते हैं जबकि टेलकॉन कंसोल केवल रिवर्स एसश के लिए अपने स्वयं के सर्वर से कनेक्ट कर सकते हैं।


1

आप ngrok का उपयोग कर सकते हैं । प्रक्रिया आसान है:

  1. उनकी साइट पर रजिस्टर करें
  2. wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
  3. unzip ngrok-stable-linux-amd64.zip
  4. .ngrok ऑर्ट्टोकैन <अपने ngrok खाते से अद्वितीय कुंजी>
  5. ./ngrok tcp 22
  6. दूरस्थ पीसी पर आप इस तरह से कनेक्ट कर सकते हैं:
    1. ssh username@0.tcp.ngrok.io -p 11000
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.