SSH रिवर्स सॉक्स टनल


26

ssh -D स्थानीय मशीन पर मोज़े का बंदरगाह बना सकते हैं, जो यातायात को दूरस्थ स्थानों तक पहुंचाता है, फिर अन्य स्थानों पर।

ssh -L port:host:hostport, स्थानीय मशीन पर पोर्ट सुनें, रिमोट मशीन के दृष्टिकोण से "होस्ट: होस्टपोर्ट" को ट्रैफ़िक पास करें।

ssh -R port:host:hostportका समकक्ष है ssh -L, जो रिमोट मशीन पर पोर्ट सुनता है, और स्थानीय मशीन के दृष्टिकोण से "होस्ट: होस्टपोर्ट" को ट्रैफ़िक पास करता है।

लेकिन इसका क्या मतलब है ssh -D, यानी, रिमोट मशीन पर मोज़े का पोर्ट कैसे खोला जाए, जो ट्रैफ़िक को लोकल तक पहुंचाएगा, फिर दूसरी जगहों पर?


1
प्रश्न मूल्य खो देता है क्योंकि आपने एक जवाब स्वीकार किया है जो काम नहीं करता है और नहीं कर सकता है। यह (जो
उत्तरकर्ता

जवाबों:


12

साथ -Dऔर -Lआपके पास दो मशीनों के बीच किसी भी तरह से संवाद करने का एक तरीका है।

इसलिए...

  • स्थानीय मशीन से, -Rस्थानीय मशीन के sshd पर बताई गई रिमोट मशीन पर एक सुनने का पोर्ट बनाने के लिए उपयोग करें।
  • -Dरिमोट मशीन पर उपयोग करें , जो आपके द्वारा बनाए गए पोर्ट पर इंगित किया गया है।

मैं "लगता है" नीचे भरने में यह काम कर देगा ...

ssh remotehost -R remoteport:localhost:localport "ssh -D 9050 localhost -p remoteport"

उपरोक्त आवश्यकताओं में ' remotehost', ' remoteport' & ' localport' को बदलना होगा। एक मोज़े प्रॉक्सी 9050 पर बनाई जाएगी।


ओह, ऐसा लगता है कि SO पर पूछा गया था: stackoverflow.com/questions/842021/… केवल उत्तर ही विचार है। मुझे यकीन है कि एक काम करेगा ;-) EDIT - हां, कि एक मेरा से ज्यादा सही था। मैंने अपना खूंटा गाड़ दिया है।
प्राइस डे

दरअसल, मैंने अपनी स्थिति में इस अप्रत्यक्ष तरीके का इस्तेमाल किया। लेकिन मेरी मजबूती की स्थिति में, उनके पास मूल विशेषाधिकार नहीं था, इसलिए उनके पास sshd सेवा नहीं हो सकती है, उनके पास केवल OpenSSH क्लाइंट है। इसलिए मुझे पता लगाना है कि एक सीधा तरीका है, लेकिन ओपनएसएसएच नहीं लगता है ... धन्यवाद वही
बेरी

1
@barlop और यह काम नहीं करेगा क्योंकि कहते हैं कि आप ssh को निष्पादन योग्य 10.0.0.10 से चलाते हैं। -R आगे 10.0.0.10:9050 को कहता है, लेकिन SOCKS सर्वर 10.0.0.5 पर चल रहा है
barlop

1
@PriceChild क्या आपने वास्तव में अपनी कमांड का परीक्षण किया है?
बार्लोप

5
-1 आपने इसका परीक्षण करने की जहमत नहीं उठाई और आपकी आज्ञा पूरी तरह से गलत है। आपने इसे अन्य SO उत्तर की तरह बनाने की कोशिश की लेकिन आप इसमें असफल रहे। A से B तक SSHing, वह जिसे आप ssh -D से लिंक करते हैं, A पर सुनता है। आपके किसी ने इसे B पर सुना है। आपका एक गलत है। आपके पास SOCKS प्रॉक्सी है जो सुन रहा है।
बारलोप

14

इस स्निपेट के साथ ~ / .ssh / config में पारदर्शी रूप से प्राप्त किया जा सकता है:

Host sockstunnel
    ProxyCommand ssh -D 3128 localhost nc -q 1 localhost 22

Host target
    RemoteForward 3128 localhost:3128
    ProxyCommand ssh -W target:22 sockstunnel

विवरण

हम एक रिवर्स डायनामॉर्फवर्ड चाहते हैं। यह दो ssh कमांड का उपयोग करके हासिल किया गया है:

  • ssh -D 3128 localhost
  • ssh -R 3128:localhost:3128 target

इस तरह लक्ष्य SSH क्लाइंट के लिए एक SOCKS सुरंग है।

मैंने जो कुछ भी किया वह मध्यवर्ती मेजबान के माध्यम से दूरस्थ लक्ष्य तक पहुँचने के लिए ssh का पीछा करने के शास्त्रीय तरीके का उपयोग करना है ताकि लक्ष्य में प्रवेश करते समय SOCKS सुरंग निर्माण को पारदर्शी रूप से नियंत्रित किया जा सके। पहला ProxyCommand + nc ट्रिक अनिवार्य है क्योंकि -W का मतलब है ClearAllForwardings।


1
यह स्वर्ण पदक के लायक है।
डाकाटीन

क्या आप अपने आदेशों का अधिक विस्तृत विवरण प्रदान कर सकते हैं?
एलोनो एस

3

OpenSSH के साथ एक रिवर्स मोजे सुरंग प्रदान करने के लिए कोई सुविधा नहीं है, इसलिए आपको "दूरस्थ" मशीन पर मोजे प्रॉक्सी प्रदान करने वाले ssh कमांड को चलाना होगा।

यदि दूरस्थ मशीन स्थानीय मशीन में ssh नहीं कर सकती है, तो पहले स्थानीय से रिमोट के लिए ssh कनेक्शन बनाएं, जो 22 से उदाहरण के लिए 2222 को पोर्ट करता है। फिर रिमोट मशीन 2222 पोर्ट पर स्थानीय मशीन में ssh कर सकती है


2
local$ ssh -R 1080 remote
remote$ curl --socks5 localhost https://example.com

OpenSSH 7.6 के बाद से

ssh (1): रिवर्स डायनामिक फ़ॉरवर्डिंग के लिए समर्थन जोड़ें। इस मोड में, ssh SOCKS4 / 5 प्रॉक्सी के रूप में कार्य करेगा और दूरस्थ SOCKS क्लाइंट द्वारा अनुरोधित गंतव्यों के लिए आगे के कनेक्शन। इस मोड को -R और RemoteForward विकल्पों के लिए विस्तारित सिंटैक्स का उपयोग करने का अनुरोध किया जाता है और, क्योंकि यह केवल क्लाइंट पर लागू किया जाता है, सर्वर को समर्थित होने के लिए अपडेट करने की आवश्यकता नहीं होती है।

https://www.openssh.com/txt/release-7.6


क्या आप इसके लिए कोई संदर्भ प्रदान कर सकते हैं?
स्कॉट

वैसे, ओपनश-क्लाइंट 8.0 में एक बग है जिसमें आप पोर्ट ( ssh -R 127.0.0.3:1080 remote) के साथ बाइंड एड्रेस नहीं चुन सकते हैं , आप वर्तमान में रिवर्स एसओकेएस प्रॉक्सी को केवल एक पोर्ट से बांध सकते हैं ।
एडम काटज़
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.