2008-09-05 6 views
5

मेरे पास एक छोटा स्थानीय नेटवर्क है। मशीनों में से केवल एक ही बाहरी दुनिया में उपलब्ध है (यह आसानी से बदला जा सकता है)। मैं इसे स्थापित करने में सक्षम होना चाहता हूं कि ऐसे एसएसएच अनुरोध जो मानक बंदरगाह पर नहीं आते हैं, दूसरी मशीन पर जाते हैं। क्या यह संभव है? यदि हां, तो कैसे?क्या एसएसएच अनुरोधों को अग्रेषित करना संभव है जो एक निश्चित बंदरगाह पर किसी अन्य मशीन पर आते हैं?

ओह और इन मशीनों के सभी या तो Ubuntu या ओएस एक्स

उत्तर

11

एक और रास्ता तय करना होगा ssh का उपयोग करने के सुरंग (जो ग्राहक पक्ष पर होता है)।

ssh -L 8022:myinsideserver:22 [email protected] 

बंदरगाह से 22 कि ssh कनेक्शन (मानक ssh के माध्यम से मशीन है कि बाहर (myoutsideserver) से पहुंचा जा सकता है से कनेक्ट करता है यही कारण है कि और बनाता है एक सुरंग:

आप इस तरह एक ssh आदेश कर चाहते हैं बंदरगाह) सर्वर पर जो केवल अंदर से ही सुलभ है।

ssh -p 8022 [email protected] 

अपने स्थानीय होस्ट पर बंदरगाह 8022 के लिए कनेक्शन तो पहले ssh कनेक्शन के माध्यम से टनल मिल जाएगा कि आप के ऊपर ले जा:

तो फिर तुम इस तरह एक और ssh आदेश (अभी भी जुड़े हुए पहले एक छोड़कर) कर चाहते हैं myinsideserver।

एसएसएच बंदरगाह को अग्रेषित करने की अनुमति देने के लिए आपको मेरेआउटसाइडर पर कुछ करना पड़ सकता है। मैं अब दोबारा जांच कर रहा हूं।

संपादित

हममम। एसएसएच मैनपेज यह कहता है: ** केवल सुपरसुर विशेषाधिकार प्राप्त बंदरगाहों को आगे बढ़ा सकता है। **

इस प्रकार का मेरा मतलब है कि पहला एसएसएच कनेक्शन रूट होना चाहिए। शायद कोई और इसे स्पष्ट कर सकता है।

ऐसा लगता है कि सुपर उपयोगकर्ता विशेषाधिकार अग्रेषित बंदरगाह (इस मामले में, 8022) एक विशेषाधिकार प्राप्त बंदरगाह (22) की तरह नहीं है के रूप में रूप में लंबे समय की आवश्यकता नहीं है। स्पष्टीकरण Mike Stone के लिए धन्यवाद।

+1

मैं यह पता लगाने की कोशिश कर रहा हूं कि यह कैसे करें और आखिर में इस पर आ गया! काश मैं एक बार से ऊपर तीर क्लिक कर सकता है! –

0

चल रहे हैं ऐसा करने के लिए पोर्ट fowarding उपयोग कर सकते हैं। यहाँ एक नज़र डालें:

http://portforward.com/help/portforwarding.htm

कैसे इस पृष्ठ पर बंदरगाह आगे अनुरोध करने के लिए अपने रूटर स्थापित करने के लिए पर निर्देश हैं:

http://www.portforward.com/english/routers/port_forwarding/routerindex.htm

3

@Mark Biek

मुझे लगता है कि कहने के लिए जा रहा था, लेकिन क्या आप मुझे यह करने के लिए पार कर लिया!

ssh -R 8022:myinsideserver:22 [email protected] 

अंतर क्या मशीन आप से/कनेक्ट हो रहे है: वैसे भी, मैं सिर्फ जोड़ने के लिए वहाँ भी आर विकल्प है कि चाहता था। मेरे मालिक ने मुझे यह चाल बहुत पहले नहीं दिखाया था, और यह निश्चित रूप से जानना वाकई अच्छा है ... हम फ़ायरवॉल के पीछे थे और मशीन को बाहरी पहुंच देने की ज़रूरत थी ... वह एसएसएच-आर द्वारा दूसरी मशीन पर पहुंचे वह सुलभ था ...तब उस मशीन से कनेक्शन फ़ायरवॉल के पीछे मशीन में अग्रेषित किए गए थे, इसलिए आपको उस मशीन के आधार पर -R या -L का उपयोग करने की आवश्यकता है जिस पर आप हैं और आप किसके लिए ssh-ing हैं।

इसके अलावा, मुझे यकीन है कि जब तक आप जिस पोर्ट को अग्रेषित कर रहे हैं, तब तक आप नियमित उपयोगकर्ता का उपयोग करने के लिए ठीक हैं (इस मामले में 8022 पोर्ट) प्रतिबंधित सीमा से नीचे नहीं है (जो मुझे लगता है कि 1024 है, लेकिन मैं गलत हो सकता है), क्योंकि वे "आरक्षित" बंदरगाह हैं। इससे कोई फर्क नहीं पड़ता कि आप इसे "प्रतिबंधित" बंदरगाह पर अग्रेषित कर रहे हैं क्योंकि वह बंदरगाह खोला नहीं जा रहा है (मशीन को सुरंग के माध्यम से यातायात भेजा गया है, इसे सुरंग का कोई ज्ञान नहीं है), 8022 पोर्ट आईएस है खुले होने और इस तरह से प्रतिबंधित है।

संपादित करें: बस याद रखें, सुरंग केवल तब तक खुली है जब प्रारंभिक एसएसएच खुला रहता है, इसलिए यदि यह समय समाप्त हो जाता है या आप इसे बाहर निकलते हैं, तो सुरंग बंद हो जाएगी।

0

उबंटू में , आप Firestarter इंस्टॉल कर सकते हैं और उसके बाद अपने मशीन के अंदर मशीन पर बंदरगाह 22 तक बाहरी पहुंच के साथ अपनी मशीन पर एक मानक मानक पोर्ट से एसएसएच यातायात को आगे बढ़ाने के लिए Forward Service सुविधा का उपयोग कर सकते हैं।

ओएस एक्स पर आप बंदरगाह को सक्षम करने के लिए /etc/nat/natd.plist फ़ाइल संपादित कर सकते हैं।

0

फ़ायरवॉल नियमों के साथ गड़बड़ किए बिना, आप एक ~/.ssh/config फ़ाइल सेट अप कर सकते हैं।

मान लें 10.1.1.1 'गेटवे' प्रणाली है और 10.1.1.2 'क्लाइंट' सिस्टम है। ,

ssh gateway 

एक और टर्मिनल में ग्राहक के लिए एक कनेक्शन खोलने:

Host gateway 
    Hostname 10.1.1.1 
    LocalForward 8022 10.1.1.2:22 

Host client 
    Hostname localhost 
    Port 8022 

आप के माध्यम से 'गेटवे' के लिए एक ssh कनेक्शन खोल सकते हैं।

ssh client 
संबंधित मुद्दे

 संबंधित मुद्दे