यदि आप भाग्यशाली हैं कि आपका इंटरनेट सर्विस प्रोवाइडर (ISP) आपको एक समर्पित IP पता देता है, तो आप अपने राउटर में कुछ पोर्ट फ़ॉरवर्डिंग नियम जोड़कर एक होम सर्वर सेट अप कर सकते हैं और इसे इंटरनेट पर उपलब्ध करा सकते हैं। लेकिन यदि आपका ISP आपको अपने पड़ोसियों के साथ वह IP साझा करने के लिए मजबूर करता है, तो पोर्ट फ़ॉरवर्डिंग मदद नहीं करेगा। अन्य प्रदाता केवल फ़ायरवॉल नियमों के माध्यम से इनकमिंग कनेक्शन को ब्लॉक करते हैं।
आप एक वर्चुअल प्राइवेट सर्वर की मदद से इन सभी प्रतिबंधों को बायपास कर सकते हैं। कुछ भी काम करेगा, भले ही इसमें 512MB से कम RAM हो, क्योंकि इसे केवल नेटवर्क ट्रैफिक को रीडायरेक्ट करना है। यह CPU और RAM पर बहुत हल्का है। सर्वर इनकमिंग कनेक्शन प्राप्त करेगा और उन्हें "रिवर्स SSH टनल" नामक चीज के माध्यम से आपके कंप्यूटर पर रीडायरेक्ट करेगा। इस तरह आप बहुत कम मासिक लागत के साथ किसी भी प्रकार का होम सर्वर सेट अप कर सकते हैं।
कल्पना करें कि आप फ़ाइल अपलोड/सिंक्रनाइज़ करने के लिए एक NextCloud सर्वर बनाते हैं। आपको उन फ़ाइलों को अपने होम सर्वर पर रखने की गोपनीयता मिलती है, और फिर आप आवश्यक सभी स्पेस प्राप्त करने के लिए 6TB हार्ड ड्राइव खरीद सकते हैं। आपको केवल मासिक बिजली बिल और वर्चुअल प्राइवेट सर्वर के लिए $5/माह से कम का भुगतान करना होगा। यह 6TB स्पेस वाले सर्वर के मासिक बिल से कहीं सस्ता है।
नोट: यह केवल TCP नेटवर्क ट्रैफिक को रीडायरेक्ट करने के लिए काम करता है। TCP का उपयोग वेब सर्वर (पोर्ट 80/tcp) जैसी चीजों द्वारा किया जाता है। UDP का उपयोग कुछ (सभी नहीं) गेम सर्वर द्वारा किया जाता है, उदाहरण के लिए Counter Strike (पोर्ट 27015/UDP)। UDP टनलिंग संभव है, लेकिन कुछ "हैक्स" के साथ, जो भविष्य के ट्यूटोरियल का विषय हो सकते हैं।
Windows 10 में अब बिल्ट-इन SSH क्लाइंट है
SSH कनेक्शन शुरू करने के लिए अब PuTTY का उपयोग करने की आवश्यकता नहीं है। वास्तव में, इस ट्यूटोरियल के लिए आप टनल सेट अप करने के लिए वास्तव में इस बिल्ट-इन क्लाइंट का उपयोग करेंगे। यदि आप इससे परिचित नहीं हैं तो Windows 10 के OpenSSH क्लाइंट के बारे में ट्यूटोरियल पढ़ें।
कनेक्शन टनल करने के लिए वर्चुअल प्राइवेट सर्वर तैयार करें
DigitalOcean, Linode, Vultr, या जो भी आप पसंद करते हैं, अपने पसंदीदा प्रदाता के साथ एक वर्चुअल प्राइवेट सर्वर बनाएं। सबसे महत्वपूर्ण बात यह है कि एक सर्वर स्थान चुनें जो आपके जितना संभव हो उतना करीब हो ताकि नेटवर्क लेटेंसी को कम किया जा सके। सर्वर को इस तरह सेट अप करने का प्रयास करें कि आप सीधे रूट अकाउंट में लॉग इन कर सकें, अधिमानतः SSH की के साथ, क्योंकि यह अधिक सुरक्षित है। यदि आप चाहते हैं कि सर्वर 1024 से नीचे के पोर्ट पर आने वाले कनेक्शन को सुने, तथाकथित विशेषाधिकार प्राप्त पोर्ट, तो यह आवश्यक है।
कमांड प्रॉम्प्ट खोलें (या यदि आप Linux पर हैं तो टर्मिनल), और SSH के माध्यम से सर्वर में लॉग इन करें।
OpenSSH सर्वर सेटिंग्स संपादित करें:
nano /etc/ssh/sshd_config
यदि आप रूट के रूप में लॉग इन नहीं थे बल्कि एक नियमित उपयोगकर्ता के रूप में थे, तो आपको इस कमांड की आवश्यकता होगी, अन्यथा आप फ़ाइल को सेव नहीं कर पाएंगे:
sudo nano /etc/ssh/sshd_config
नीचे स्क्रॉल करें जब तक आपको "GatewayPorts" नामक एक वेरिएबल न मिल जाए। लाइन इस तरह दिख सकती है: #GatewayPorts no। पूर्ववर्ती "#" को हटाएं (अनकमेंट करने के लिए) और लाइन को GatewayPorts yes में बदलें।

यदि आपको लाइन नहीं मिलती है, तो बस अंत तक स्क्रॉल करें और लाइन को स्वयं जोड़ें:
GatewayPorts yes
सेव करने के लिए Ctrl + X दबाएं, फिर y दबाएं, और अंत में Enter दबाएं।
SSH डेमॉन को रीलोड करें ताकि यह नई सेटिंग को उठा ले।
systemctl reload ssh.service
SSH सत्र से बाहर निकलें।
exit
रिवर्स SSH टनल कैसे सेट अप करें
कमांड पैरामीटर Linux, Windows, और यहां तक कि BSD ऑपरेटिंग सिस्टम पर समान हैं। सामान्य सिंटैक्स है:
ssh -R remote_port:host:localport your_username@IP-of-server
remote_portसर्वर को बताता है कि उस पोर्ट पर आने वाले कनेक्शन को रीडायरेक्ट करें।hostसर्वर को बताता है कि कनेक्शन को किस IP पते पर रीडायरेक्ट किया जाना चाहिए।127.0.0.1का उपयोग यहां अपने स्वयं के कंप्यूटर पर रीडायरेक्ट करने के लिए किया जाएगा।localportनिर्देश देता है कि डेटा पैकेट को किस पोर्ट पर रीडायरेक्ट किया जाना चाहिए। यहां, आपको वह पोर्ट नंबर डालना चाहिए जिस पर आपका एप्लिकेशन, जो आपके स्थानीय कंप्यूटर पर इंस्टॉल है, सुनता है।
उदाहरण के लिए, सर्वर पर पोर्ट 80 पर आने वाले सभी कनेक्शन को अपने स्थानीय कंप्यूटर पर पोर्ट 8080 पर फॉरवर्ड करने के लिए, कमांड होगी:
ssh -R 80:127.0.0.1:8080 root@203.0.113.1
यह मानता है कि आपके पास एक वेब सर्वर है, जैसे Apache या Nginx, जो आपके स्थानीय मशीन पर पोर्ट 8080 पर सुनता है। लेकिन यदि Apache/Nginx डिफ़ॉल्ट पोर्ट 80 पर सुन रहा है, तो पिछले कमांड में उसी पोर्ट को दो बार उपयोग करने में कोई समस्या नहीं है (क्योंकि वे एक अलग सर्वर में पोर्ट 80 को संदर्भित कर रहे हैं)।
ssh -R 80:127.0.0.1:80 root@203.0.113.1
इस बिंदु पर, यदि कोई आपके वर्चुअल प्राइवेट सर्वर के IP पते को ब्राउज़र के एड्रेस बार में दर्ज करता है, तो उनका कनेक्शन रीडायरेक्ट हो जाएगा और आपके स्थानीय कंप्यूटर द्वारा सर्व किया जाएगा।

ऊपर की तस्वीर में, Chrome के लिए एक साधारण वेब सर्वर का उपयोग किया गया था जो डिफ़ॉल्ट रूप से पोर्ट 8887 पर सुनता है। आप ऐप इंस्टॉल करके और फिर तस्वीर में कमांड का उपयोग करके इस सेटअप को स्वयं आज़मा सकते हैं।
यह उल्लेखनीय है कि टनल को सक्रिय रखने के लिए, आपका SSH सत्र सक्रिय रहना चाहिए। टनल को बंद करने के लिए, टर्मिनल/कमांड प्रॉम्प्ट विंडो में exit टाइप करें।
निष्कर्ष
जैसा कि आप देख सकते हैं, रिवर्स SSH टनल बनाना कठिन नहीं है, लेकिन वेबसाइट को सुरक्षित करना है। इसलिए यदि आप स्थानीय NextCloud सर्वर जैसे विचार को लागू करना चुनते हैं, तो इसे कम से कम एक वर्चुअल मशीन में आइसोलेट करें। इस तरह, यदि आपकी वेबसाइट से समझौता हो जाता है, तो कम से कम आपके ऑपरेटिंग सिस्टम का बाकी हिस्सा अक्षत रहेगा।
और, आप जानते हैं ... हमेशा बैक अप लें जो आप खोने का जोखिम नहीं उठाना चाहते!