कैसे एक सर्वर पर ssh जो मैं सीधे नहीं पहुँच सकते हैं?


17

प्रसंग

मैं अपनी प्राथमिक मशीन के रूप में उबंटू डेस्कटॉप चला रहा हूं, जिसे मैं डी कहूंगा। मैं एस के माध्यम से सर्वर एस से कनेक्ट करना चाहता हूं, लेकिन फ़ायरवॉल मुझे अवरुद्ध कर रहा है।

मेरे पास सर्वर एस तक पहुंच है, एक बहुत ही बोझिल रास्ते के माध्यम से, जिसमें एक विंडोज वर्चुअल मशीन और पुटी शामिल है । यह इस सर्वर के साथ काम करना बेहद कष्टप्रद बनाता है: पूरी तरह से अलग वातावरण, कॉपी / पेस्ट काम नहीं करता है, मैं इसे कनेक्ट होने के दौरान अपने डेस्कटॉप का ठीक से उपयोग नहीं कर सकता (Alt-Tab वर्चुअल मशीन द्वारा टूट गया है) आदि।

मैंने सत्यापित किया है कि मैं सर्वर S से अपने डेस्कटॉप मशीन D (मेरी आवश्यकता के विपरीत) से ssh कर सकता है।

क्या मैं किसी तरह सर्वर से "पोर्ट फ़ॉरवर्डिंग" या समान शुरू कर सकता हूं, ताकि मैं अपने डेस्कटॉप से ​​सर्वर पर ssh कर सकूं?


2
कूदो मेजबान ... उन्हें प्यार होगा !!!
रॉनजॉन


@ muru यह एक अलग परिदृश्य है, लेकिन निश्चित रूप से संबंधित (यह सब के बाद सुरंग बनाने के बारे में है!)। इस मामले में मैं D->SगालीS->D
फर्जीवाड़ा

जवाबों:


32

आप दूरस्थ सर्वर से अपने स्थानीय मशीन में SSH सुरंग स्थापित करने के लिए निम्न कमांड का उपयोग कर सकते हैं:

$ ssh -f -N -R 1234:localhost:22 user@your_machine_ip

जब सुरंग स्थापित की जाती है, तो आप बस निम्नलिखित आदेश का उपयोग करके अपने दूरस्थ सर्वर पर ssh कर सकते हैं:

$ ssh -p 1234 user@localhost

कृपया ध्यान दें कि आपको स्वचालित लॉगिन (कोई पासवर्ड प्रॉम्प्ट) के लिए ssh कुंजी सेट करने की आवश्यकता है। यदि आप संवादात्मक रूप से SSH सुरंग बनाना चाहते हैं, तो आप विकल्पों को हटा सकते हैं -f -N। अधिक जानकारी के लिए, man ssh


Windows VM के माध्यम से यह सुरंग कैसी है? (जहाँ मैं काम करता हूँ, वहाँ फ़ायरवॉल की कई परतें हैं और केवल कुछ ही पोर्ट खोले गए हैं।)
रॉनजॉन

@ रॉन जॉन का मानना ​​है कि यह इस तथ्य का उपयोग करता है कि (ओपी के लिए) सर्वर से डेस्कटॉप काम करता है, इसलिए यह सर्वर (पोर्ट 22) से सीधे डेस्कटॉप मशीन (पोर्ट 1234) तक एक सुरंग स्थापित करता है जिसका उपयोग किया जा सकता है सर्वर पर ssh से कनेक्ट करने के लिए (जो पोर्ट 22 का उपयोग करता है)। विंडो VM का उपयोग केवल सुरंग सेट करने के लिए किया जाता है। (कृपया मुझे सही करें अगर मैं गलत हूं)
pizzapants184

@dangonfast उत्तर के अलावा आपको मूल्य के निम्नलिखित दस्तावेज़ मिल सकते हैं: spencerstirling.com/computergeek/sshtunnel.html
प्राइफ़्टन

@RonJohn मैं अभी जिस दस्तावेज़ से जुड़ा हुआ है, वह उस प्रश्न का उत्तर देने में मदद कर सकता है, कम से कम जहाँ तक फ़ायरवॉल आदि की कई परतें जाती हैं (यदि स्मृति मुझे सही सेवा देती है - तो यह बहुत लंबा समय हो गया है कि मैंने इसे पढ़ा है .. मैं बस याद है कि वर्षों पहले से लिंक है)।
प्रीफटन

1
@ pizzapants184 वास्तव में, यह मेरा शुरुआती बिंदु था: एस -> डी से ssh, इसलिए मैं इसका दुरुपयोग दुर्व्यवहारपूर्वक डी -> एस करना चाहता हूं, भले ही वह काम न करे। नेटवर्क को क्यों कॉन्फ़िगर किया गया है, ऐसा कुछ है जो मुझसे बच जाता है। यह जानबूझकर या
गलतफहमी

5

यदि आप ओपनएसएसएच (7.3+) का नया संस्करण चला रहे हैं तो आप ProxyJumpजादुई तरीके से सब कुछ एक साथ उपयोग कर सकते हैं :

ssh -J windows_machine remote_server

जो आपके रूप में ~/.ssh/configदिखता है:

Host remote_server
        HostName remote_server
        ProxyJump windows_machine
        User myname

ProxyJumpपूर्ण SSH सिंटैक्स का समर्थन करता है, इसलिए यदि आप jimचालू हैं windows_serverऔर यह 2222ssh के लिए पोर्ट का उपयोग करता है । आप लिख सकते हैं तब से remote_serverआईपी ​​पर है :192.168.0.110windows_server

Host remote_server
        HostName 192.168.0.110
        ProxyJump jim@windows_machine:2222
        User myname

और अभी भीssh remote_server वहां पहुंचने के लिए बस चलाते हैं ।


यदि आप SSH का पुराना संस्करण चला रहे हैं, तो ProxyCommand का उपयोग करें - यह आपको SSH को वास्तविक SSH कमांड चलाने से पहले प्रॉक्सी कनेक्शन स्थापित करने के लिए कमांड चलाने के लिए कहता है।

ssh -o ProxyCommand='ssh -W %h:%p windows_machine' remote_server

यह SSH -W विकल्प का उपयोग करता है , जो अधिक आर्कन नेटकैट सिंटैक्स के लिए शॉर्टहैंड है ।

ध्यान दें, जब आप चलाते ssh remote_serverहैं , तो आप अब windows_machineयह सुनिश्चित करने की आवश्यकता है कि आप अपनी मशीन से आईपी के बजाय remove_server जंप बॉक्स से आईपी ​​का उपयोग करें - ये अच्छी तरह से समान हो सकते हैं।

आप इस निर्देश को अपनी ~/.ssh/configफ़ाइल में जोड़ सकते हैं :

Host remote_server
  HostName remote_server
  User myname
  ProxyCommand ssh -W %h:%p windows_machine

इस का मतलब है कि अगर remote_server है एक अलग मशीन के रूप में से देखा windows_machineआप config में रख सकती है तो और अभी भी केवल का उपयोग ssh remote_server


1
यह एक बेहतर जवाब है।
रॉबर्ट रिडेल

उपयोगी होते समय, यह पूछे जाने वाले प्रश्न का उत्तर नहीं देता है। ओपी कहता है कि वे D-> S (वे क्या चाहते हैं) से SSH नहीं कर सकते, लेकिन वे S-> D से SSH कर सकते हैं। बीच में कोई ssh परदे के पीछे नहीं है (विंडोज़ वर्चुअल मशीन के बजाय, शायद आरडीपी द्वारा एक्सेस किया जा रहा है)।
mbrig

@mbrig वास्तव में। मैंने इस समाधान की कोशिश नहीं की है, लेकिन मुझे आश्चर्य होगा कि अगर यह काम करता है: मैं डी से फायरवॉल कर रहा हूं -> एस
डंगऑनफ़ास्ट

लेकिन आप कहते हैं कि आप विंडोज़ मशीन तक पहुँच सकते हैं - इससे मैं समझ गया था कि यह आपके और दूसरी मशीन के बीच जम्प बॉक्स का काम कर सकता है।
बोरिस द स्पाइडर

1
मैं एक प्रॉपर टूल (VMWare Horizon) के साथ विंडोज़ मशीन में लॉगिन कर सकता हूं। मैंने कभी नहीं कहा कि मैं इसे कर सकता हूं। मैंने पुट्टी साथी ssh सर्वर (मैं नाम भूल गया) स्थापित करके इस प्रश्न को पोस्ट करने से पहले भी इसका परीक्षण किया, लेकिन मेरे परीक्षण विफल रहे। मुझे लगता है कि ssh विंडोज़ सबनेट को भी फ़ायरवॉल किया गया है।
डेंजरसफास्ट

1

चीजों को दरकिनार करने और एक जटिल मार्ग बनाने के बजाय, आप सिर्फ अपने डेस्कटॉप से ​​सर्वर की अनुमति के लिए SSH के लिए नहीं पूछ सकते हैं? यदि आपको इसकी आवश्यकता है और आपको सर्वर तक पहुँच प्राप्त करनी चाहिए तो मैं यह नहीं देख सकता कि आपके पास अनुरोध अस्वीकार क्यों होगा।


नीचे की व्याख्या करने के लिए देखभाल? सवाल यह है कि "कैसे एक सर्वर पर ssh जो मैं सीधे नहीं पहुंच सकता हूं?" इसलिए मेरा जवाब है कि यह वैध है, इसकी अनुमति देने के लिए एक फ़ायरवॉल नियम है। यह अच्छी सुरक्षा प्रथा के अनुसार इसके आसपास जाने का उचित तरीका भी है।
सोलरफ्लेयर

मैं एक बड़े कॉर्पोरेट ग्राहक के तीन महीने के अनुबंध के अपने पहले सप्ताह में हूं। मुझे लैपटॉप नहीं दिया गया है (मैं मेरा उपयोग करता हूं), और मुश्किल से एक डेस्क। मुझे अलग-अलग सेवाओं का उपयोग करने के लिए दर्जनों क्रेडेंशियल्स मिले, और मैं मुश्किल से पूरी चीज़ को हथिया रहा हूं। मैं जो करना चाहता हूं वह मेरे काम करने के लिए एक कठिन आवश्यकता नहीं है: मैं वीएम में काम कर सकता हूं, और यही मेरे बॉस मुझे बताएंगे अगर मैं मजाकिया सवाल पूछना शुरू कर दूं। या वह मुझे हेल्प डेस्क की ओर इशारा करेगा जो अगले कुछ हफ्तों / महीनों के लिए सड़क को नीचे गिरा सकती है।
डेंजरसफास्ट

मेरे लिए VM में काम करना आसानी से 50% उत्पादकता हानि का मतलब होगा, इसलिए मैं जितना संभव हो इससे बचना चाहता हूं। फिर भी, मुझे यह टमटम बहुत पसंद है!
डेंजरसफास्ट

1
मैं समझ सकता हूँ। मेरे अनुभव में 'बड़े कॉरपोरेट ग्राहक' बहुत परेशान हो जाते हैं, जब ठेकेदार फायरवॉल और नीतियों को दरकिनार कर देते हैं ताकि वे अपना काम कर सकें, भले ही यह परोपकारी उद्देश्यों के लिए हो। तथ्य यह है कि आप सर्वर से अपने डेस्कटॉप पर एसएसएच कर सकते हैं, मुझसे कहता है कि या तो आप रिवर्स करने में सक्षम नहीं हैं, एक निरीक्षण या कुछ ऐसा है जिसे किसी विशिष्ट उद्देश्य के लिए रखा गया है।
सोलरफ्लायर

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