मेरे पास दो मशीनें हैं, क्लाइंट और सर्वर।
क्लाइंट (जो एक कॉर्पोरेट फ़ायरवॉल के पीछे है) सर्वर पर एक रिवर्स SSH सुरंग खोलता है, जिसमें सार्वजनिक रूप से सुलभ IP पता होता है, जो इस कमांड का उपयोग करता है:
ssh -nNT -R0: लोकलहोस्ट: 2222 insecure@server.example.com
ओपनएसएसएच 5.3+ में, 0
केवल -R
एक के लिए स्पष्ट रूप से कॉल करने के बजाय "उपलब्ध पोर्ट चुनें" के बाद होने वाली घटना । मैं ऐसा कर रहा हूं इसका कारण यह है कि मैं एक पोर्ट नहीं चुनना चाहता जो पहले से उपयोग में है। सच में, वहाँ वास्तव में कई ग्राहक हैं जो समान सुरंगों को स्थापित करने की आवश्यकता है।
इस बिंदु पर समस्या यह है कि सर्वर को पता नहीं है कि कौन सा क्लाइंट है। अगर हम इनमें से किसी एक ग्राहक (लोकलहोस्ट के माध्यम से) से जुड़ना चाहते हैं तो हमें कैसे पता चलेगा कि कौन सा पोर्ट किस क्लाइंट को संदर्भित करता है?
मुझे पता है कि ssh पोर्ट संख्या को कमांड लाइन में रिपोर्ट करता है जब उपरोक्त तरीके से उपयोग किया जाता है। हालाँकि, मैं सत्र को जीवित रखने के लिए ऑटोसह का उपयोग करना चाहूंगा। autossh कांटा / निष्पादन के माध्यम से अपनी बाल प्रक्रिया चलाता है, संभवतः, ताकि वास्तविक ssh कमांड का आउटपुट ईथर में खो जाए।
इसके अलावा, मैं क्लाइंट से रिमोट पोर्ट प्राप्त करने के लिए किसी अन्य तरीके के बारे में नहीं सोच सकता। इस प्रकार, मैं सोच रहा हूं कि क्या सर्वर पर इस पोर्ट को निर्धारित करने का कोई तरीका है।
मेरे पास एक विचार यह है कि किसी तरह / etc / sshrc का उपयोग किया जाए, जो माना जाता है कि एक स्क्रिप्ट है जो हर कनेक्शन के लिए चलती है। हालाँकि, मुझे नहीं पता कि किसी को यहाँ जानकारी कैसे प्राप्त होगी (शायद उस कनेक्शन को संभालने वाले विशेष sshd का पीआईडी?) मुझे कुछ संकेत मिले।
धन्यवाद!