ओपनएसएसएच के हाल के संस्करणों पर रिवर्स सुरंग बनाते समय किसी भी उपलब्ध पोर्ट को बांधने के लिए 0 का रिमोट पोर्ट दिया जा सकता है:
-R [bind_address:] port: host: hostport
...
यदि पोर्ट तर्क `0 'है, तो सुनने का पोर्ट गतिशील रूप से सर्वर पर आवंटित किया जाएगा और क्लाइंट को रन टाइम पर रिपोर्ट किया जाएगा।
Opensh ssh क्लाइंट मैनपेज
मेरा सवाल है कि मैं (स्वचालित तरीके से) सर्वर पर इस पोर्ट आवंटन का निर्धारण कैसे कर सकता हूं। यह बल्कि ऐसा प्रतीत नहीं होता है कि यह ssh क्लाइंट को चलाने वाले होस्ट को सूचित किया गया है - लेकिन लक्ष्य के लिए नहीं, जो क्लाइंट पर सेवाओं तक पहुंचने के लिए इस पोर्ट से कनेक्शन बनाना चाहेगा।
दो समान विकल्प मैं सोच सकता हूं कि या तो चल रहे हैं
# netstat -ntlp
सर्वर पर और sshd द्वारा या के आउटपुट को देखकर 127.0.0.1 पर बाध्य संदिग्ध बंदरगाहों की तलाश करें
# lsof -p $PPID | grep TCP | grep LISTEN
लेकिन इनमें से कोई भी स्वचालन के दृष्टिकोण से सुखद नहीं है, और यदि इस तरह की एक से अधिक सुरंग बनाई जाती है, तो डायनेमिक पोर्ट को मूल सेवा पोर्ट पर वापस बांधने का कोई तरीका नहीं है।
क्या कुछ ऐसा है जो मैं SSH_CONNECTION पर्यावरण चर के बराबर, लेकिन सक्रिय सुरंगों के लिए, समान रूप से sshd सर्वर साइड पर सक्रिय सुरंगों (स्थानीय और दूरस्थ पोर्ट नंबर दोनों) की सूची प्राप्त करने के लिए याद कर रहा हूँ?
कुछ संदर्भ के लिए, मैं एक मेजबान के लिए संभावित रूप से बहुत से एक साथ रिवर्स सुरंगों को बनाने की कोशिश कर रहा हूं, अलग-अलग मेजबानों पर उसी पोर्ट नंबर पर वापस सुरंग बना रहा हूं। टीसीपी स्टैक होने से पोर्ट पूल को स्वचालित रूप से प्रबंधित करना ऐसा करने का सबसे प्रभावी तरीका लगता है।