केवल SSH के साथ: ssh SOCKS प्रॉक्सी के जरिए रिवर्स टनल वेब एक्सेस


15

एक बार जब मुझे एक सर्वर से कनेक्ट करना होता है जहां पहुंच अत्यधिक प्रतिबंधित है।
DMZ फ़ायरवॉल द्वारा केवल इनबाउंड SSH की अनुमति है।
आउटबाउंड HTTP कनेक्शन अवरुद्ध हैं।

मैं अपने SSH सत्र के माध्यम से वेब एक्सेस करने के लिए एक आसान तरीका ढूंढ रहा हूं, इसलिए मैं yum / apt-get के माध्यम से अपडेट और सॉफ़्टवेयर स्थापित कर सकता हूं। आदर्श रूप से, मैं संरक्षित क्षेत्र में अतिरिक्त सॉफ़्टवेयर / सेवाएँ स्थापित करने से बचना चाहूँगा।

ऐसी स्थिति में आप क्या करते हैं?

SSH में -D <port>SOCKS प्रॉक्सी विकल्प होता है। लेकिन दुर्भाग्य से यह क्लाइंट से सर्वर तक केवल एक ही रास्ता है और कोई रिवर्स विकल्प नहीं है।

जवाबों:


27

मैं अंत में sshकेवल यह पूरा करने में कामयाब रहा :

  1. अपने ग्राहक मशीन पर एक स्थानीय SOCKS प्रॉक्सी शुरू करें (उपयोग करके ssh -D)
  2. दूरस्थ सर्वर से कनेक्ट करें और ssh -Rअपने स्थानीय SOCKS प्रॉक्सी के लिए एक रिवर्स पोर्ट फ़ॉरवर्डिंग ( ) सेटअप करें
  3. अग्रेषित प्रॉक्सी का उपयोग करने के लिए सर्वर सॉफ्टवेयर को कॉन्फ़िगर करें

1. पृष्ठभूमि में स्थानीय मोज़े प्रॉक्सी शुरू करें

SSH के माध्यम से लोकलहोस्ट से कनेक्ट करें और पोर्ट 54321 पर SOCKS प्रॉक्सी खोलें।

$ ssh -f -N -D 54321 localhost

-f पृष्ठभूमि में SSH चलाता है।

नोट: यदि आप उस टर्मिनल को बंद कर देते हैं जहां आपने कमांड शुरू की है, तो प्रॉक्सी प्रक्रिया को मार दिया जाएगा। यह भी याद रखें कि जब आप काम कर रहे हों या प्रक्रिया को मारकर या तो टर्मिनल विंडो बंद करके अपने आप को साफ कर लें!

2. रिमोट सर्वर और सेटअप रिवर्स पोर्ट फॉरवर्डिंग से कनेक्ट करें

रिमोट पोर्ट 6666 को स्थानीय पोर्ट 54321 पर बाँधें। यह आपके स्थानीय सॉक्स प्रॉक्सी को पोर्ट 6666 पर रिमोट साइट पर उपलब्ध कराता है।

$ ssh root@target -R6666:localhost:54321

3. अग्रेषित प्रॉक्सी का उपयोग करने के लिए सर्वर सॉफ्टवेयर को कॉन्फ़िगर करें

बस yum, apt, curl, wget या किसी भी अन्य टूल को कॉन्फ़िगर करें जो प्रॉक्सी का उपयोग करने के लिए SOCKS का समर्थन करता है 127.0.0.1:6666

देखा! हैप्पी टनलिंग!


4. वैकल्पिक: अग्रेषित प्रॉक्सी का उपयोग करने के लिए सर्वर सॉफ्टवेयर को कॉन्फ़िगर करें

मैंने पाया कि proxychainsलक्ष्य सर्वर पर स्थापित करने से चीजें बहुत आसान हो जाती हैं।

यह SOCKS प्रॉक्सी (सम telnet) का उपयोग करने के लिए किसी भी सॉफ़्टवेयर को सक्षम करता है , जो LD_PRELOADटीसीपी और डीएनएस अनुरोधों को पुनर्निर्देशित करने के लिए एक ट्रिक का उपयोग करके प्रॉक्सी में करता है।

/etc/proxychains.confअग्रेषित सॉक्स प्रॉक्सी का उपयोग करने के लिए सेटअप :

[ProxyList]
# SSH reverse proxy
socks5  127.0.0.1 6666

सुरंग वाले मनमाने उपकरण (जो टीसीपी का उपयोग करते हैं) proxychains:

$ proxychains telnet google.com 80
$ proxychains yum update
$ proxychains apt-get update

3

SSH के नए संस्करण बहुत ही सरल विकल्प का उपयोग करने की अनुमति देते हैं ssh-R <[bind_address:]port>। होस्ट पर केवल पोर्ट और शायद बाइंड एड्रेस का उपयोग करना, लेकिन क्लाइंट साइड पोर्ट को निर्दिष्ट नहीं करना रिवर्स एसओकेएस प्रॉक्सी बनाएगा।

यह नए SSH संस्करणों के पुरुष पृष्ठों में भी कहा गया है:

[...] यदि कोई स्पष्ट गंतव्य निर्दिष्ट नहीं किया गया था, तो ssh एक SOCKS 4/5 प्रॉक्सी के रूप में कार्य करेगा और दूरस्थ SOCKS क्लाइंट द्वारा अनुरोधित गंतव्यों के लिए अग्रेषित करेगा।

आप इसका परीक्षण कर्ल को एक साधारण "मुझे मेरा आईपी दें" -एपीआई जैसे http://ifconfig.io से जोड़कर कर सकते हैं ।

$ curl ifconfig.io

बनाम

$ curl --socks5 localhost:<PORT> ifconfig.io


2
यह उल्लेख करना उपयोगी होगा कि कौन सी संस्करण संख्या उस सुविधा को पेश की गई थी।
कैसपर्ड

बहुत सरल, thanx!
काई

1
@kasperd: OpenSSH 7.6 , 2017-10-03 को जारी किया गया। नई विशेषताओं के
MestreLion
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.