ssh मल्टी-हॉप… sap config फाइल के लिए कमांड एडैपिंग


10

मैं अपने मल्टी-हॉप ssh कमांड को ssh। Ssh / config फाइल में डालने की कोशिश कर रहा हूँ।

यह मेरा कनेक्शन ग्राफ है: लैपटॉप (मैं यहां हूं) ------> उपयोगकर्ता -------> कार्य केंद्र

मैंने ssh पब्लिक rsa कीज़ को 'यूजरवार्स' और 'वर्कस्टेशन' में डाला है। इस समय मैं इस लाइन को टाइप करके कनेक्ट कर सकता हूं:

ssh -A -t userserver@userver ssh -A userworkstation@workstation

फिर भी, मैं एक ही प्रभाव तक पहुँचने के लिए ~ / .ssh / config में कॉन्फिग फ़ाइल की क्षमताओं का उपयोग करने में सक्षम होना चाहता हूं, लेकिन एक साधारण कमांड का उपयोग कर सकता हूं, जो मुझे 'scp' के साथ फास्ट कॉपी करने की अनुमति देगा। एकमात्र समस्या यह है कि 'उपयोगकर्ता' के पास "एनसी" कमांड नहीं है और मेरे पास वहां सुपरसुअर नहीं है, बस मेरे होम फ़ोल्डर का नियंत्रण है। फिर भी, मैंने कुछ चीजों की कोशिश की:

मेरे लैपटॉप में यह कॉन्फिग फाइल है (~ / .ssh / config):

# laptop config file
Host userver
Hostname userver_hostname
port 22
User server_user

इसके अलावा उपयोगकर्ता में एक और विन्यास फाइल (~ / .ssh / config)

# userver config file
Host workstation
Hostname workstation_hostname
port 22
user workstation_username

इस विन्यास फाइल के साथ मैं कनेक्ट कर सकता हूं

ssh -A -t userver ssh -A workstation

जो एक सुधार है, लेकिन पर्याप्त नहीं है। मैंने अपने लैपटॉप के विन्यास में इस तरह से एक और होस्ट जोड़ने की कोशिश की:

Host hop
ProxyCommand ssh -A -t userver ssh -A workstation

फिर, जब मैं करता हूँ

ssh hop

मैं त्रुटियों के साथ निम्न आउटपुट प्राप्त करता हूं और कनेक्ट नहीं कर सकता:

Pseudo-terminal will not be allocated because stdin is not a terminal.
Pseudo-terminal will not be allocated because stdin is not a terminal.
-bash: line 1: $'SSH-2.0-OpenSSH_6.4\r': command not found

कोई विचार?

जवाबों:


6

जिस कमांड की आपको जरूरत है, वह है ProxyCommand

आपको अपने .ssh / config फाइल में ये लाइनें डालनी चाहिए:

  Host userver
  HostName userver.example.com
  .........    

  Host workstation 
  ProxyCommand ssh -q userver nc -q0 workstation 22

अब आप पीसी वर्कस्टेशन से कनेक्ट कर सकते हैं

  ssh worksation

यदि यह स्पष्ट नहीं है, या आप अधिक विवरण चाहते हैं, तो मेरा सुझाव है कि आप ssh को मल्टी-होपिंग के लिए यह उत्कृष्ट परिचय पढ़ें ।

संपादित करें:

आप हमेशा एक उपनाम परिभाषित कर सकते हैं: अपनी /home/your_name/.bashrc फ़ाइल में, यह पंक्ति जोड़ें:

  alias ssh_workstation='ssh -A -t userver ssh -A -X workstation' 

(मैंने -Xविकल्प डाला है ताकि आप दूरस्थ सर्वर पर ग्राफ़िकल एप्लिकेशन चला सकें, उन्हें स्थानीय रूप से देखें; यदि आप ऐसा नहीं चाहते हैं, तो बस ड्रॉप करें -X)।


हाय MariusMatutiae, मैंने आपके समाधान की कोशिश की, लेकिन जैसा कि मैंने कहा कि मूल पोस्ट में 'userver' नोड में प्रोग्राम netcat (nc) का अभाव है। तो मुझे यह त्रुटि मिलती है: ssh वर्कस्टेशन bash: nc: कमांड नहीं मिला ssh_exchange_identification: दूरस्थ होस्ट द्वारा बंद किया गया कनेक्शन
labotsirc

क्या आप इसे स्थापित नहीं कर सकते?
MariusMatutiae

दुर्भाग्य से नहीं, 'सुपरवाइजर' में मेरे पास सुपरसुअर नहीं है, यही वजह है कि मैं एक वैकल्पिक तरीका आजमा रहा था। मुझे यह नहीं मिलता है, अगर यह "ssh -t -t userver ssh -A वर्कस्टेशन" काम करता है, तो वही ProxyCommand पर क्यों नहीं डालता है?
Labotsirc

1
@labotsirc मैंने अपने उत्तर में थोड़ा संशोधन किया है। आशा है कि आपको यह उपयोगी लग सकता है। वैकल्पिक रूप से, आप स्थानीय रूप से netcat स्थापित करने का प्रयास कर सकते हैं (यानी, केवल आपके लिए!), पंक्ति में जोड़कर Proxycommand .... netcat की अपनी प्रति के लिए पूर्ण पथ। मुझे यकीन नहीं है कि अनुमति के कारण यह काम कर रहा है, लेकिन आप इसे आजमा सकते हैं।
MariusMatutiae

मेरे नेटकैट बाइनरी को कॉपी किया, -q0 विकल्प को हटा दिया क्योंकि यह त्रुटियां दे रहा था, और अब यह काम करता है! धन्यवाद
Labotsirc

10

मैंने ncअन्य उदाहरण की तरह netcat ( ) का उपयोग करने से बेहतर काम करने के लिए निम्न समाधान पाया । नेटकैट के साथ मेरा कनेक्शन बहुत धीमा था और जब तक मैं कुछ चाबियाँ नहीं मारता तब तक बार-बार लटका होता। इसके अलावा आप netcat स्थापित करने की जरूरत नहीं है।

निम्नलिखित को अपने में जोड़ें ~/.ssh/config:

Host *
  ServerAliveCountMax 4
  ServerAliveInterval 15

Host workstation
  Hostname workstation
  User userworkstation
  ProxyCommand ssh userserver@userver -W %h:%p

तो आप इस तरह से ssh कर सकते हैं:

ssh workstation

यह भी ध्यान दें कि आपके ProxyCommandकाम न करने का कारण यह है कि आपको वह नहीं मिल रहा है जो ProxyCommandवह करता है। ProxyCommandएक पाइप बनाना चाहिए जिस पर sshएक एसएसएल कनेक्शन बनाया जा सके। दूसरे शब्दों में, कमांड को एक प्रक्रिया शुरू करनी चाहिए जो स्टड और पोर्ट से कनेक्ट करने के लिए स्टडआउट है । आपके कॉन्फ़िगरेशन में, आप एक ssh कनेक्शन बना रहे हैं जिसके साथ पोर्ट के बजाय कमांड शेल से कनेक्ट होता है ।sshsshdProxyCommandsshsshd

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