Ssh_config में कई 'होस्ट *'?


27

रास्ते की मेरी समझ ~ / .ssh / config काम करता है कि प्रत्येक 'होस्ट' लाइन विन्यास फाइल में उस बिंदु के बाद किसी भी मेजबान मिलान के लिए प्रभावी होती है।

मेरे पास कई व्यक्तिगत सर्वर और कार्य सर्वर हैं जिनसे मुझे जुड़ने की आवश्यकता है। मैं निम्नलिखित की तरह कुछ करने की कोशिश कर रहा हूँ:

# सामान्य सेटिंग्स
कंट्रोलमास्टर ऑटो
कंट्रोलपाथ ~/.ssh/controlmaster/%r@%h:% p
फॉरवर्डएजेंट हाँ
फॉरवर्डएक्स 11 हां
GSSAPIAuthentication सं
पबकीअथेंटिकेशन हाँ

# व्यक्तिगत सर्वर
मेज़बान *
उपयोगकर्ता harleypig
IdentityFile ~ / .ssh / personal_id_rsa

यजमान host1
Hostname host1.com

यजमान host2
होस्टनाम host2.com

# काम करने वाले
मेज़बान *
उपयोगकर्ता alan.young
IdentityFile ~ / .ssh / work_id_rsa

मेजबान का काम १
Hostname work1.companyserver.com

मेजबान का काम २
Hostname work2.companyserver.com

मेज़बान *
उपयोगकर्ता devuser

यजमान dev1
होस्टनाम dev1.companyserver.com

मेजबान देव २
होस्टनाम dev2.companyserver.com

डॉक्स से संकेत मिलता है कि host1 और host2 को 'personal_id_rsa' और उपयोगकर्ता harleypig का उपयोग करना चाहिए। work1, work2, dev1 और dev2 को 'work_id_rsa' का उपयोग करना चाहिए और पहले दो को उपयोगकर्ता 'alan.young' और dev1 और dev2 को उपयोगकर्ता का 'devuser' होना चाहिए।

हालाँकि, ऐसा नहीं हो रहा है। जो कुछ भी 'होस्ट *' मैंने पहले रखा था, उसके बाद के सभी होस्ट इससे जुड़ने की कोशिश करते हैं। क्या मैं गलत समझ रहा हूँ या कुछ याद कर रहा हूँ?


धन्यवाद, इन दोनों उत्तरों के बीच मैं अपने कनेक्शन को काम करने में सक्षम था।
22 सितंबर को हार्लेपिग जूल

जवाबों:


36

से ssh_configमैनुअल :

चूंकि प्रत्येक पैरामीटर के लिए पहले प्राप्त मूल्य का उपयोग किया जाता है, फ़ाइल की शुरुआत के पास अधिक मेजबान-विशिष्ट घोषणाएं दी जानी चाहिए, और अंत में सामान्य चूक।

तो आपके उदाहरण में, सभी होस्ट उपयोग करेंगे User harleypigऔर IdentityFile ~/.ssh/personal_id_rsa

के बारे में सोचो Hostफ़ॉलबैक के रूप में वाइल्डकार्ड के साथ निर्देशों: निम्न सेटिंग केवल अगर वे अभी तक सेट नहीं किया गया का उपयोग करें। आपको कुछ इस तरह लिखना होगा:

Host host1
Hostname host1.com
Host host2
Hostname host2.com
Host host*
User harleypig
IdentityFile ~/.ssh/personal_id_rsa

Hostयदि होस्ट एलियाज़ के दिए गए सेट का वाइल्डकार्ड्स के साथ मिलान नहीं किया जा सकता है, तो आप एक पंक्ति में कई पैटर्न रख सकते हैं Host host* more* outlier


15

आप निश्चित रूप से गलत कर रहे हैं।

  • आपको हमेशा Host *अंतिम प्रविष्टि के रूप में रखना चाहिए ।
  • आपके पास कई Host *प्रविष्टियाँ नहीं हो सकती हैं

यदि आपकी कार्य मशीनों में एक नाम प्रारूप है, जिसे आप केवल काम करने वाली मशीनों को लक्षित करने के लिए सामान्यीकृत कर सकते हैं, उदाहरण के लिए: machine1.work.com, host.work.com, fileserver.work.com तो आप अपनी कार्य मशीनों को इस प्रकार लक्षित कर सकते हैं:

Host *.work.com
User alan.young
IdentityFile ~/.ssh/work_id_rsa

वही आपकी व्यक्तिगत मशीनों के लिए लागू होता है।


मेरे लिए, Host *फ़ाइल की शुरुआत में काम करना ठीक लगता है। शायद तथ्य यह है कि आप वाइल्डकार्ड का उपयोग कर रहे हैं इस तथ्य को ट्रम्प करता है कि उन्हें प्राथमिकता देते समय यह पहली प्रविष्टि है?
ज़ाज़

Btw, Host *.work.comएक अमान्य सिंटैक्स है। यह केवल दूसरे तरीके से काम करता है:Host myserver*
डैनियल आंद्रेई मिंको

3
@ MincăDanielAndrei यह दोनों तरीकों से काम करता है, यह सिर्फ एक वाइल्डकार्ड अभिव्यक्ति है और आप इसे किसी भी अन्य वाइल्डकार्ड के रूप में उपयोग कर सकते हैं। ।। होस्ट Git-codecommit * amazonaws.com यह मेरा ~ / .ssh / config से एक काम उदाहरण
हमीदुल्लाह खान

@HededullahKhan गंभीरता से, मैंने कोशिश की है कि यह जवाब नहीं दे रहा है। यदि आप ऐसा करते हैं तो Host *subdomain.comयह प्रतिक्रिया देने वाला नहीं है।
डैनियल आंद्रेई मिनकॉ

1
@ MincăDanielAndrei यह व्यवहार पुरुष पृष्ठों में प्रलेखित है, अगर यह काम नहीं करता (मेरे लिए न तो) यह एक बग है।
गोएट्ज़क
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.