SSH कनेक्शन स्थापित करते समय मैं एक स्थानीय पोर्ट कैसे निर्दिष्ट कर सकता हूं?


13

मेरे पास IDC में दो सर्वर होस्ट हैं। मैं केवल दो सर्वरों के बीच संबंध स्थापित करने के लिए पोर्ट 20/21/22/23/3389 / 33101-33109 का उपयोग कर सकता हूं। आईडीसी नेटवर्क डिवाइस किसी भी अन्य पैकेट को बंद कर देगा जिसका स्रोत या गंतव्य बंदरगाह 20/21/22/23/80/3389 / 33101-33109 सूची / श्रेणी में नहीं है। लेकिन एसएसएच का स्रोत पोर्ट यादृच्छिक है।

कमांड का उपयोग करके कोई भी आसानी से रिमोट पोर्ट निर्दिष्ट कर सकता है।ssh username@server -p remote_port

तो क्या sshस्थानीय स्रोत पोर्ट को निर्दिष्ट करने के लिए कोई कमांड पैरामीटर या कोई अन्य तरीका है, इसलिए मैं उदाहरण के लिए, पोर्ट 33101 को एसएसएच कनेक्शन स्थापित करने के लिए उपयोग कर सकता हूं?

मेरा नेटवर्क टोपोलॉजी इस प्रकार है:
नेटवर्क टोपोलॉजी

जवाबों:


26

आप ssh क्लाइंट के लिए स्रोत पोर्ट निर्दिष्ट नहीं कर सकते।

लेकिन आप ncइस तरह एक प्रॉक्सी के रूप में उपयोग कर सकते हैं :

ssh -p 33101 -o 'ProxyCommand nc -p 33101 %h %p' $SERVER_2

से कैसे मैं Unbuntu सर्वर पर SSH के लिए स्रोत बंदरगाह सेट कर सकते हैं? (सर्वरफॉल्ट पर)


धन्यवाद, यह woks!
फ़ैज़िन यू

2

एकबारगी या कभी-कभार, स्थितियों के लिए, ProxyCommand दृष्टिकोण आसानी से एक बहुत ही सुविधाजनक है।

दूसरी ओर, यदि आपको कई एक साथ कनेक्शन की आवश्यकता होती है, या जब आपको दैनिक कार्य के लिए अक्सर उस कमांड का उपयोग करने की आवश्यकता होती है, तो आप इसके बजाय अपने सर्वर पर नेटवर्क-पता-अनुवाद (एनएटी) नियम सेट करने पर विचार कर सकते हैं।

इसके rootलिए सबसे पहले एक एकल NAT नियम को लागू करने के लिए आपके सर्वर पर सुपरयुसर (आमतौर पर ) पहुंच की आवश्यकता होती है । ध्यान दें कि एनएटी नियम को लागू करने के लिए इसे (या प्रभावी) बिल्कुल भी अनुमति नहीं दी जा सकती है , भले ही आपके पास सुपरसुसर एक्सेस हो, अगर आपका "सर्वर" वास्तव में एक मशीन के बजाय एक कंटेनर (डॉकर की तरह) है।

iptablesसूट के साथ एक विशिष्ट लिनक्स प्रणाली की बात करते हुए , NAT नमूना आपके नमूना मामले के लिए आपके सर्वर 1 पर लागू करने के लिए नियम जैसा हो सकता है:

iptables -t nat -I POSTROUTING -d <server2-ip-address> -p tcp --dport <server2-port> -j SNAT --to :33101-33109

वह आदेश लिनक्स कर्नेल को उस समय उपलब्ध 3333-33109 की सीमा के भीतर चुने गए स्रोत पोर्ट का उपयोग करके बाहर जाने के लिए Server2-ip -port के पोर्ट सर्वर 2-पोर्ट की ओर कोई संबंध बनाने का निर्देश देता है ।

एक बार जब वह नियम लागू हो जाता है, तो आप अपने सर्वर 2 से हमेशा की तरह जुड़ जाते हैं:

ssh username@server2 -p remote_port

और जब तक आप sshNAT नियम में निर्दिष्ट सीमा में उपलब्ध पोर्ट उपलब्ध हैं, तब तक आप इसी कमांड का उपयोग कई बार भी कर सकते हैं ।

हालाँकि, ध्यान दें कि netstatआपके सर्वर पर चलाया गया (या समतुल्य कमांड) कनेक्शन के स्थानीय पते को अनमॉडिफाइड , बेतरतीब ढंग से चुना हुआ, सोर्स पोर्ट नंबर होने के बावजूद रिपोर्ट करता है कि वास्तविक ट्रैफ़िक जो आपके सर्वर को दिया गया है, संशोधित सोर्स पोर्ट नंबर को वहन करता है

NAT नियम को पूर्ववत करने के लिए, कमांड एक ही है सिवाय -Dविकल्प के स्थान पर -I

एनएटी नियम को बूट पर स्वचालित रूप से लागू करने के लिए यह निर्भर करता है कि आपके सर्वर पर लिनक्स वितरण क्या है, और इस पर पहले से ही कुछ फ़ायरवॉल कॉन्फ़िगरेशन है या नहीं।

मुझे बीएसडी जैसी प्रणालियों के साथ कोई अनुभव नहीं है, लेकिन मुझे विश्वास है कि एक समकक्ष है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.