SSH द्वारा क्लाइंट को कनेक्ट करने के माध्यम से, इंटरनेट तक सर्वर पहुंच प्रदान करें


18

मैं अपने होम कंप्यूटर का उपयोग एसएसएच द्वारा सर्वर बी से कनेक्ट करने के लिए कर सकता हूं जहां बाहरी नेटवर्क तक पहुंच अवरुद्ध है। दूसरे शब्दों में, बी से इंटरनेट के सभी अनुरोध एक त्रुटि फेंकते हैं: नेटवर्क पहुंच से बाहर है । क्या मैं इन सभी अनुरोधों को कंप्यूटर से गुजरने के लिए पुनर्निर्देशित कर सकता हूं जिनकी इंटरनेट पर अप्रतिबंधित पहुंच है?

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

मैंने इंटरनेट पर खोज की और ऐसा लगता है कि मुझे एक रिवर्स सुरंग की आवश्यकता है। लेकिन मुझे केवल ऐसे समाधान मिले जहां एक पोर्ट पुनर्निर्देशित होता है । लेकिन यह वह नहीं है जिसकी मुझे आवश्यकता है क्योंकि मैं बी को ए से नहीं बल्कि इंटरनेट से एक्सेस करना चाहता हूं ।


यदि इस प्रश्न का उत्तरवाहक इस टिप्पणी को देखता है, तो क्या आप हमें यह बताना चाहेंगे? मैं इसके साथ कुछ भी गलत नहीं देखता, भले ही जवाब "संभव न हो" हो।
स्ट्रगल करें


ssh आपको स्थानीय या दूरस्थ पोर्ट अग्रेषण करने की अनुमति देता है - अर्थात जब B पर कोई एप्लिकेशन स्थानीय पोर्ट X को खोलने का प्रयास करता है, जो कि आपके द्वारा निर्दिष्ट पोर्ट को खोलने के प्रयास के रूप में A को अग्रेषित करता है। तो फिर A उस कनेक्शन को अग्रेषित करने के लिए स्वतंत्र है जो इंटरनेट से अनुरोध करता है। आपने यह उल्लेख नहीं किया है कि आप किन पोर्ट्स या प्रोटोकॉल का उपयोग करने का प्रयास कर रहे हैं, जिससे विस्तृत उत्तरों का निर्माण आसान हो जाएगा।
स्टैब्लडॉग

मैं संगीतकार का उपयोग करने की कोशिश कर रहा हूं , इसलिए संकुल डाउनलोड करने के लिए इसे जीआईटीबी और एचटीटीपीएस अनुरोध होना चाहिए।
AL

जवाबों:


8

आप कंप्यूटर A पर एक प्रॉक्सी चला सकते हैं कि कंप्यूटर B तब कंप्यूटर A के माध्यम से इंटरनेट तक पहुंचने के लिए कनेक्ट होगा।

कुछ इस तरह

             +----------+            +-----------+
             |          |+----SSH+-->|           |
             |     A    |            |    B      |
             |+--------+|            |           |
  Internet <-++-+PROXY<++<SSH Tunnel--+          |
             |+--------+|            |           |
             +----------+            +-----------+

पोर्ट 3128 पर सुनता ए पर स्क्वीड की तरह एक प्रॉक्सी स्थापित करें, और फिर आप इसके साथ सर्वर को भेज सकते हैं -
ssh -L 3128:127.0.0.1:3128 user@B

जो B को A के माध्यम से इंटरनेट एक्सेस करने की अनुमति देगा


एक बार बी से जुड़े होने पर, इंटरनेट के अनुरोधों को ए पर पुनर्निर्देशित कैसे किया जाएगा? बदलने के लिए कोई कॉन्फ़िगरेशन नहीं है?
AL

आपको B पर 127.0.0.1:3128
लॉरेंस

11

बस @Lrrence और @ SpiRail के जवाब में कुछ और स्पष्ट कदम जोड़ दिए गए हैं।

सेटअप निम्नानुसार करें:

होस्ट ए पर सेटअप:

  1. होस्ट ए पर प्रॉक्सी सर्वर स्क्वीड स्थापित करें। डिफ़ॉल्ट रूप से स्क्विड 3128 पोर्ट पर सुनता है।
    yum install squid
  2. टिप्पणी http_access deny allतो जोड़ने http_access allow all/etc/squid/squid.conf में
  3. यदि होस्ट A स्वयं इंटरनेट से कनेक्ट करने के लिए 10.140.78.130:8080 कुछ प्रॉक्सी का उपयोग करता है, तो उस प्रॉक्सी को /etc/squid/squid.confइस प्रकार जोड़ें :
refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
cache_peer 10.140.78.130 parent 8080 0 no-query default
never_direct allow all

होस्ट B पर सेटअप:

  1. निम्नलिखित प्रविष्टियों को / etc / पर्यावरण में जोड़ें
export http_proxy=http://127.0.0.1:3129
export https_proxy=http://127.0.0.1:3129
  1. source /etc/environment

अब हमारा सेटअप पूरा हो गया है।

दूरस्थ बंदरगाह अग्रेषण के साथ SSH सुरंग बनाना

  1. होस्ट A से निम्न SSH कमांड चलाएँ
    ssh -R 3129:localhost:3128 user@HostB

    यदि आप लगातार SSH सुरंग बनाना चाहते हैं, तो आप निम्न प्रकार से autossh का उपयोग कर सकते हैं:
    autossh -M 20000 -f -NT -R 3129:localhost:3128 user@HostB
    कार्य करने के लिए autossh कमांड के लिए, आपको HostH से HostB तक SSH कुंजी सेटअप होना चाहिए

  2. यह Host B को Host A के माध्यम से इंटरनेट एक्सेस करने की अनुमति देगा।

इंटरनेट की जाँच:

  1. होस्ट B से निम्न कमांड चलाएँ
    wget https://google.com

ट्रैफ़िक प्रवाह आरेख : यहाँ छवि विवरण दर्ज करें


5

@ लॉरेंस का जवाब मेरे लिए काफी अच्छा था कि मैं इसे पूरा कर सकूं। लेकिन यहां अधिक विस्तृत चरण हैं जिनका मैंने उपयोग किया है।

मैंने अपने लैपटॉप 4g डोंगल को इंटरनेट से रूट करने के लिए रास्पबेरी पाई के लिए वाईफाई लाइन के लिए एक निश्चित लाइन कनेक्शन के साथ इसका उपयोग किया।

यदि आपका मेजबान एक मैक है: स्क्वीडमैन स्थापित करें http://squidman.net/squidman/

(न केवल सामान्य स्क्वीड, मुझे इसे बनाने में बहुत परेशानी हुई थी) डिफ़ॉल्ट सेटिंग्स मेरे लिए काफी अच्छी लग रही थीं।

4 जी से कनेक्ट करें वाईफाई से कनेक्ट करें - अपने वाईफाई पर एक स्थिर आईपी को कॉन्फ़िगर करें और गेटवे पते को हटा दें (जब तक कि आप उन्नत चीजें नहीं कर रहे हैं) आपको दो डिफ़ॉल्ट मार्ग और इसके बहुत कष्टप्रद हैं। - सुनिश्चित करें कि आपका वाईफाई राउटर उसी 192.168.xy रेंज का उपयोग नहीं कर रहा है (इस मामले में एक अलग "x" कॉन्फ़िगर करें)

ssh -R 8080:localhost:8080 pi@<ip address of the pi or target machine>

पीआई पर

export http_proxy=http://localhost:8080

पाठ जोड़ने के साथ:

Defaults env_keep = "http_proxy https_proxy ftp_proxy"

अब wget काम करेगा और इसलिए sud-apt-get होगा ताकि आप पैकेज स्थापित कर सकें।

यदि आप यहाँ भी git चाहते हैं: /programming/128035/how-do-i-pull-from-a-git-repository-through-an-http-proxy


आपके उत्तर के लिए धन्यवाद। यहां क्या भूमिका visudoहै? आप पाठ कहाँ जोड़ते हैं? (मैं sudoअपनी वेब होस्टिंग पर उपयोग नहीं कर सकता )
AL

मैं वास्तव में आपके प्रश्न को नहीं समझता, लेकिन यदि आप केवल टर्मिनल में विडियो टाइप करते हैं (आपको 'sudo visudo' की आवश्यकता हो सकती है) तो आप टेक्स्ट की लाइन को नीचे तक जोड़ सकते हैं।
स्पिरेल

मेरी वेब होस्टिंग पर कोई रूट एक्सेस नहीं है।
AL

बहुत समय पहले की बात है। लेकिन मेमोरी विडो से सूडोर्स फाइल को एडिट करता है और जो लाइन जोड़ी जा रही है, इसका मतलब है कि उन यूजर एनवायरमेंट वेरिएबल्स को टाइप करते समय रखा जाता है। यदि आप sudo नहीं करते हैं, तो आपको इस चरण की आवश्यकता नहीं है।
स्पिरेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.