हमारे पास एक सार्वजनिक सर्वर है जो फायरवॉल के पीछे कई ग्राहकों से एसएसएच कनेक्शन स्वीकार करता है।
इनमें से प्रत्येक क्लाइंट ssh -R
अपने वेब सर्वर से कमांड 80 पर हमारे सार्वजनिक सर्वर पर कमांड का उपयोग करके एक रिवर्स एसएसएच सुरंग बनाते हैं ।
रिवर्स एसएसएच टनल का गंतव्य बंदरगाह (क्लाइंट की तरफ) 80 है और स्रोत पोर्ट (सार्वजनिक सर्वर की तरफ) उपयोगकर्ता पर निर्भर करता है। हम प्रत्येक उपयोगकर्ता के लिए पोर्ट एड्रेस का एक नक्शा बनाए रखने की योजना बना रहे हैं।
उदाहरण के लिए, ग्राहक A अपने वेब सर्वर को पोर्ट 80 पर हमारे पोर्ट 8000 पर सुरंग करेगा; ग्राहक बी 80 से 8001 तक; क्लाइंट सी 80 से 8002 तक।
Client A: ssh -R 8000:internal.webserver:80 clienta@publicserver
Client B: ssh -R 8001:internal.webserver:80 clientb@publicserver
Client C: ssh -R 8002:internal.webserver:80 clientc@publicserver
असल में, हम जो करने की कोशिश कर रहे हैं वह प्रत्येक उपयोगकर्ता को एक पोर्ट के साथ बांधता है और उन्हें किसी अन्य पोर्ट पर सुरंग की अनुमति नहीं देता है।
अगर हम SSH की फॉरवर्ड टनलिंग सुविधा का उपयोग कर रहे हैं ssh -L
, तो हम permitopen=host:port
कॉन्फ़िगरेशन का उपयोग करके किस पोर्ट को सुरंग में डालने की अनुमति दे सकते हैं । हालांकि, रिवर्स एसएसएच सुरंग के लिए कोई समकक्ष नहीं है।
क्या प्रति उपयोगकर्ता रिवर्स टनलिंग पोर्ट को प्रतिबंधित करने का एक तरीका है?