मान लीजिए कि आप Computer A पर हैं और आप Computer B से जुड़ते हैं, इसलिए A, B से कनेक्शन शुरू करता है। कहो कि यह वेब है, इसलिए HTTP कनेक्शन। वहाँ कोई प्रॉक्सी नहीं है और कोई एन्क्रिप्शन नहीं है। कोई SSH, कोई SSH कमांड का उपयोग नहीं किया गया। आप SSH के माध्यम से उस कनेक्शन को चला सकते हैं, जिसमें टनलिंग और पोर्ट फ़ॉरवर्डिंग शामिल होगा और निश्चित रूप से एन्क्रिप्शन का लाभ भी प्राप्त करेगा, लेकिन टनलिंग जो हमेशा पोर्ट फ़ॉरवर्डिंग का उपयोग करता है, वह SSH का सबसे सरल उपयोग नहीं है।
आप किसी भी "टनलिंग" के बिना एसएसएच कर सकते हैं, इसलिए इसके भीतर एक प्रोटोकॉल को एनकैप किए बिना, जैसे कि कहो कि आप कंप्यूटर ए पर हैं और आप कंप्यूटर बी। एसएसएच प्रोटोकॉल पर कमांड लाइन का उपयोग करना चाहते हैं। और वास्तव में मैंने एक ssh -X देखा है, एक को कंप्यूटर B पर एक GUI देखने के लिए सक्षम करें, जहां कंप्यूटर B ने लिनक्स चलाया। तो एसएसएच बिना सुरंग के भी काफी कुछ कर सकता है। और आप SSH का उपयोग करते समय SSH का एन्क्रिप्शन प्राप्त करते हैं।
आप क्या कर सकते हैं, मान लें कि आप इंटरनेट कैफे से वेब ब्राउज़ करना चाहते हैं। आप कंप्यूटर A से SSH का कनेक्शन कर सकते हैं, कंप्यूटर B से, एक ऐसा कनेक्शन बना सकते हैं जो SSH सुरंग है, यह एक अन्य प्रोटोकॉल को असेप्ट करेगा, जैसे HTTP प्रॉक्सी के लिए अनुरोध .. और कंप्यूटर B पर, वेब प्रॉक्सी कार्य करेगा, लाने के लिए। वेबपेज और इसे कंप्यूटर पर भेजें। इंटरनेट कैफे में सभी व्यक्ति देखता है, ए और बी डायनेमिक पोर्ट के बीच एक एन्क्रिप्टेड ssh कनेक्शन है, जो B पर SOCKS प्रॉक्सी बनाएगा और SOCKS प्रॉक्सी वेब प्रॉक्सी के रूप में कार्य कर सकता है।
आप VNC से A से B तक का उपयोग कर सकते हैं, लेकिन इसे SSH कनेक्शन के माध्यम से करें .. ताकि SSH कनेक्शन के माध्यम से VNC कनेक्शन को टनलिंग / एनकैप्सुलेट किया जा सके।
स्थानीय बंदरगाह अग्रेषण, और दूरस्थ बंदरगाह अग्रेषण (रिवर्स सुरंग) के एसएसएच में एक अवधारणा है। वह कौन सा पक्ष सुनता है और कौन सा पक्ष आगे की ओर। स्थानीय विशिष्ट है। उदाहरण के लिए। Ssh टनलिंग की स्थिति में ये तत्व शामिल होते हैं .. ssh.exe (ssh कनेक्शन आरंभ करता है, यह ssh क्लाइंट है)। sshd.exe (ssh सर्वर, इसे कनेक्ट करने के लिए ssh.exe के लिए सुनता है)। और एन्कैप्सुलेटेड प्रोटोकॉल का क्लाइंट और सर्वर। जैसे VNC क्लाइंट और VNC सर्वर। और आपके पास कंप्यूटर हैं, जिनमें से प्रत्येक चल रहा है।
कहते हैं कि आपके कंप्यूटर A, B, C, D हैं
A- रन VNC क्लाइंट B, SSH क्लाइंट C, SSH सर्वर D, VNC सर्वर चलाता है
B, C से जोड़ता है।
A, B से जोड़ता है, फिर C आगे से D को।
B और C के बीच सब कुछ एन्क्रिप्टेड है।
ए और बी, या सी और डी के बीच कुछ भी एन्क्रिप्ट नहीं किया गया है।
SSH सुरंग B और C के बीच है।
ए और बी के बीच, और सी और डी के बीच, इस मामले में एन्कैप्सुलेटेड प्रोटोकॉल - वीएनसी है।
अब मुझे लगता है कि क्या एक रिवर्स सुरंग है और यह उपयोगी है ..
मान लीजिए कि A एक NAT राउटर के पीछे है और B एक NAT राउटर के पीछे है .. यदि A, B पर VNC से जुड़ना चाहता है, तो B को उसके राउटर पर पोर्ट फॉरवर्ड करना है। (यह SSH के बिना भी है)। एक और तरीका है, अगर बी ए को देखने के लिए ए को सक्षम करने के लिए एक कनेक्शन शुरू कर सकता है, तो आप तकनीकी विशेषज्ञ जो ब्लॉग को एक निष्पादन योग्य भेजते हैं और फिर इसे चलाते हैं और आप उनके कंप्यूटर को देखते हैं। PChelpWare ऐसा करता है- आपको इस तरह के निष्पादन योग्य बनाने में सक्षम बनाता है। लेकिन B की प्रक्रिया, आपसे जुड़ सकती है, SSH के साथ की जा सकती है।
उदाहरण के लिए, स्थानीय ssh सुरंग के परिदृश्य में, आपके पास Compa हो सकता है, VNC क्लाइंट और SSH क्लाइंट CompB चलाता है, VNC सर्वर और SSH सर्वर चलाता है।
तो सुरंग और वीएनसी कनेक्शन एक ही दिशा में चलते हैं।
A अपने SSH क्लाइंट (ssh.exe) को B के SSH सर्वर (sshd.exe) से जोड़ता है। (उसके राउटर पर पोर्ट फॉरवर्ड करने के लिए बी की आवश्यकता होती है)। ssh.exe ए पर है तो A पर एक पोर्ट बनाता है - यह जिस पर चल रहा है, वह VNC कनेक्शन के लिए सुनता है। वह सुरंग का सुनने वाला पक्ष है। और जब सुरंग का निर्माण किया गया था, तो यह निर्धारित किया गया था कि बी को इस मामले में आईपी: पोर्ट, बी जो कुछ भी आगे होना चाहिए। जहाँ पर VNC सर्वर है।
CompA / PersonA, VNC क्लाइंट को उस पोर्ट से जोड़ता है जिसे ssh.exe ने A. पर खोला है और उसके बाद B को आगे भेजा जाएगा।
लेकिन यहाँ स्थानीय ssh सुरंग के साथ समस्या है। मान लीजिए कि बी को कोई पता नहीं है कि उसके राउटर पर पोर्ट फॉरवर्डिंग कैसे किया जाए।
तब A अपने SSH.EXE, अपने ssh क्लाइंट को B के SSHD.EXE, B के ssh सर्वर से कनेक्ट नहीं कर सकता है।
ठीक है, वे एक रिवर्स SSH सुरंग कर सकते हैं
A SSH सर्वर और VNC क्लाइंट B को SSH CLIENT और VNC सर्वर चलाता है।
B, A .. को एक कमांड से जोड़ता है जो निर्देश देता है कि एक रिवर्स सुरंग बनाई जाए। तो, SSH.EXE को चलाने के लिए श्रवण स्थानीय नहीं है (जो कि B है), लेकिन श्रवण पोर्ट A पर खोला गया है, भले ही B ने ssh.exe चलाया हो, तो B A से जुड़ता है और SSH कनेक्शन बनाता है। अब एक संक्षिप्त प्रोटोकॉल के लिए सुनता है।
A तब अपने VNC क्लाइंट को उस पोर्ट से जोड़ता है जो A पर खुलता है, और B को देखता है।
बी को अपने राउटर पर पोर्ट फॉरवर्डिंग नहीं करनी थी। जैसा कि सभी बी को एक कनेक्शन शुरू करना था .. बी के लिए कोई आने वाला कनेक्शन नहीं था। यही एक एसएसएच सुरंग कर सकता है।
(ध्यान दें कि आजकल जब A, B को देखना चाहता है, तो वे आमतौर पर टीमव्यूअर की तरह एक घोल का उपयोग करते हैं, जिसमें संभवत: एक आउटगोइंग कनेक्शन दोनों शामिल होते हैं)
लेकिन किसी भी तरह से रिवर्स एसश सुरंग का उपयोग होता है।
तो क्या एक स्थानीय एसएचएस सुरंग या एक रिवर्स का उपयोग करना है, यह निर्भर करता है कि किस तरफ आने वाली अवरुद्ध है। या वह कौन सा पक्ष है जो किसी उपकरण को अवरुद्ध करने के पीछे है जिसके लिए आप नियंत्रित नहीं कर सकते। उदाहरण के लिए NAT राउटर या फ़ायरवॉल जिसे आप नियंत्रित नहीं कर सकते।
एक डायनामिक टनल, वह है जहाँ A, SSH के माध्यम से B से जुड़ता है, और B पर एक SOCKS प्रॉक्सी बनता है। A SOCKS प्रॉक्सी जेनेरिक प्रॉक्सी की तरह है .. जो विभिन्न प्रकार के परदे के पीछे की नकल कर सकता है। तो यह एक वेब प्रॉक्सी के रूप में कार्य कर सकता है। इसलिए यदि आप एक इंटरनेट कैफे में थे .. तो आप एक गतिशील सुरंग का उपयोग कर सकते हैं। CompB से कनेक्ट करें और इंटरनेट कैफे चलाने वाले सभी व्यक्ति देखता है। एक वेब प्रॉक्सी के साथ बात यह है कि एक कंप्यूटर के लिए आगे ज्यूस नहीं है अन्यथा आपको केवल एक वेबसाइट मिलेगी। यह आपके द्वारा अनुरोधित किसी भी वेब सर्वर के लिए, आपको वेब ब्राउज़ करने के लिए सक्षम करता है।
SSH को लोकल पोर्ट फ़ॉरवर्डिंग के साथ करने के लिए, इसलिए एक लोकल ssh टनल, SSH -L PORT:IP:PORT user@sshserver -p 22
जहाँ आप PORT: IP: PORT हो, वहाँ पहला "पोर्ट" पोर्ट है जो ssh.exe आपके ई.जी.एन.एन.सी. क्लाइंट से जुड़ने के लिए स्थानीय रूप से बनाएगा। और IP: PORT IP है: PORT जैसे उदाहरण VNC सर्वर। उसके बाद आपके पास sshserver -p 22 sshserver है, जो ssh सर्वर का एक IP है जिसे आप कनेक्ट कर रहे हैं, और -p 22 का अर्थ है कि पोर्ट 22 पर इसे कनेक्ट करें। आप वास्तव में PORT: IP: PORT के बजाय IP: PORT कह सकते हैं: IP: PORT जहाँ पहला IP 0.0.0.0 या * है जिसका मतलब है कि कोई भी कंप्यूटर कनेक्ट हो सकता है।
SSH लेकिन एक रिवर्स ssh सुरंग के साथ, स्थानीय रूप से पोर्ट अग्रेषण करता है। तो आप SSH -R PORT: IP: PORT करें जहाँ पहला PORT sshd.exe अंत में पोर्ट है जो सुनता है। और IP: PORT IP है: P उदाहरण के VNC सर्वर के लिए, लेकिन वह CompA, यानी COMP चल रहा ssh.exe आगे जाएगा। और यह भी हैSSH -R PORT:IP:PORT user@sshserver -p 22
डायनेमिक एसएसएच फॉर्म का होगा ssh -D 8080 <username>@192.168.1.1
किसी का उल्टा संस्करण करने का मामला है..एक रिवर्स SSH -D। https://stackoverflow.com/questions/842021/ssh-d-port-usernameserver-com-but-in-reverse वह एक SSH सर्वर चलाता था और चाहता था कि उसका मित्र उसकी SSH प्रॉक्सी तक पहुँच प्राप्त करे। तो उसका दोस्त ssh -D username@server.com चलाएगा लेकिन वह नहीं चाहता था कि उसके दोस्त के पास भी SSH कंसोल हो। इसमें कोई संदेह नहीं है कि इसे रोकने के लिए एक बेहतर तरीका है, लेकिन उसने क्या किया .. या करने के लिए कहा .. क्या वह अपने दोस्त से एसएसएच संबंध बनाता है, लेकिन फिर उसके दोस्त ने अपने एसएसएच सोक्सएस प्रॉक्सी का उपयोग किया है। तो उसके दोस्त को उसके SOCKS प्रॉक्सी का उपयोग करने के लिए एक प्रॉक्सी है! इसलिए वह (व्यक्ति-व्यक्ति A- अपना कंप्यूटर सेट अप कर रहा है, ताकि उसका मित्र उसकी (A की) प्रॉक्सी तक पहुंच सके ssh -R 24680:localhost:12345 remotehost
और फिर टाइप करे ;ssh -D 12345 localhost
वह ssh -R, का अर्थ है पहला पोर्ट निर्दिष्ट (24680) CompB पर खुलेगा। और उस पर प्राप्त कुछ भी (जो बी जहां अपने वेब ब्राउज़र को जोड़ता है) ए को भेजा जाएगा और 12345 को पोर्ट करने के लिए अग्रेषित किया जाएगा, जहां ए अपने सॉक्स प्रॉक्सी को चलाता है। और SOCKS प्रॉक्सी कैसे सेट की जाती है, इसके साथ मजेदार बात यह है कि SSH के साथ SOCKS प्रॉक्सी कैसे सेट की जाती है, क्या इसके लिए अपने ssh कनेक्शन की आवश्यकता है। यह SSH के माध्यम से SSH को टनलिंग नहीं कर रहा है .. SOCKS अनुरोधों को SSH के माध्यम से टनल किया जाता है। लेकिन SOCKS प्रॉक्सी बनाने वाला ssh कनेक्शन एक अलग कनेक्शन है जो A से उसके ssh सर्वर से जुड़ने पर पोर्ट 22 पर आता है। (SSH कनेक्शन A के अलावा B से बना है)। वह अंतिम उदाहरण, रिवर्स ssh -D SSH का एक बहुत ही जटिल उपयोग है! अन्य उपयोग (स्थानीय, रिवर्स और सामान्य-डी) अभी भी जटिल हैं लेकिन रिवर्स-डी उदाहरण के रूप में जटिल नहीं हैं।