SSH ज्ञात होस्ट को बैश स्क्रिप्ट में कैसे जोड़ें?


13

मैं एक नए सर्वर का प्रावधान करने के लिए एक बैश स्क्रिप्ट बना रहा हूं जिसे मैं एक वेब एप्लिकेशन को तैनात कर सकता हूं। एक चीज जो मुझे हमेशा करनी है वह है GitHub के रूप में एक ज्ञात होस्ट का उपयोग करना ssh git@github.com। मैं इस प्रक्रिया को बैश स्क्रिप्ट में कैसे स्वचालित कर सकता हूं, और इसे एक शानदार तरीके से कर सकता हूं?

जवाबों:


17

जाने का सरल तरीका कुछ ऐसा करना होगा।

ssh-keyscan remote_server >>~/.ssh/known_hosts

यदि यह बॉक्स एकदम नया है, तो ~/.sshआपको ssh-keyscan चलाने से पहले निर्देशिका बनाने की आवश्यकता हो सकती है ।

ध्यान रखें कि ssh-keyscan एक मनमानी संख्या में होस्टनाम ले सकता है। यह सभी चाबियाँ प्राप्त कर सकता है।


1
पुनश्च - प्रावधान के लिए आपको बैश स्क्रिप्ट के बजाय कठपुतली जैसी किसी चीज़ का उपयोग करना चाहिए। कठपुतली के लिए यह आसानी से sshkey संसाधन के साथ संभाला जा सकता है । इस प्रश्न को भी
ज्ञात

2
यह निश्चित रूप से मुझे अच्छा लग रहा था, लेकिन कठपुतली और प्रतिस्पर्धियों पर कुछ घंटे बिताने के बाद, मैं स्क्रिप्ट्स और पवित्रता पर रोक लगाने के लिए पीछे हट गया। यदि वे उपकरण सहज हैं, तो मुझे स्पष्ट रूप से कोई अंतर्ज्ञान नहीं है। YMMV।
रॉन बर्क

बैश का उपयोग करें। मैं लगातार कठपुतली या ansible जैसी चीजों के विभिन्न संस्करणों में मुद्दों पर चलता हूं। हम हमेशा बैश करने के लिए वापस जाते हैं ... 3 कंपनियां अब इस तरह से चल रही हैं और बैश हमारे लिए हमेशा विश्वसनीय हैं।
23

4

क्या आप नई कुंजी को स्वीकार करने की कोशिश कर रहे हैं? यदि हां, तो आप -oStrictHostKeyChecking = no का उपयोग कर सकते हैं।
ऐसा करना एक बहुत ही बुरा विचार है क्योंकि आप अब पूरी तरह से खुले हैं कि बीच-बीच में हमले कर रहे हैं।

एक बेहतर विकल्प सिर्फ एक ज्ञात_होस्ट फ़ाइल को प्रबंधित करना और उस फ़ाइल का पुन: उपयोग करना होगा जब आप नए सर्वर का प्रावधान करते हैं। इसे गितुब पर चिपकाएं और गितुब में शशि करने से पहले उस फाइल को डाउनलोड करने के लिए एक सरल स्क्रिप्ट लिखें।

सख्त मेजबान कुंजी जाँच एक अच्छी बात है।


क्या आप "ज्ञात_होस्ट फ़ाइल प्रबंधित करें" पर विस्तृत कर सकते हैं? मुझे लगता है कि मैं क्या करना चाहता हूं, लेकिन जब मैंने फ़ाइल देखी, तो यह सामग्री किसी तरह की हैश / कुंजी की तरह दिखती थी और कुछ ऐसी नहीं दिखती थी, जिसे मैन्युअल रूप से प्रबंधित करने का इरादा था।
एंड्रयू

2
एक नया सर्वर का प्रावधान, मैन्युअल रूप से sith को github में करें जैसे आप करेंगे। संकेत दिए जाने पर होस्ट कुंजी स्वीकार करें। लॉग आउट। कॉपी ~ /। Ssh / ज्ञात_होस्ट उस नए प्रावधानित सर्वर से कहीं और (जीथब, वेब सर्वर, जब तक आप इसे प्राप्त कर सकते हैं) कोई फर्क नहीं पड़ता। अगली बार जब आप एक सर्वर का प्रावधान करते हैं, तो उस फ़ाइल को github में भेजने से पहले कॉपी कर लें। आपको फ़ाइल को संपादित करने की आवश्यकता नहीं है।
यूनिक्स

यह मेरे उत्तर (सुरक्षित) से बेहतर है। हालांकि yoonix के उत्तर पर एक और सुधार 'ssh-keyscan github.com' को पार्स करने और लौटी हुई कुंजी को ~ / .ssh / ज्ञात_होस्ट में संग्रहीत करने के लिए है, जिस तरह से यह एक फ़ाइल में स्थिर नहीं है जिसे आपको अपडेट करने की आवश्यकता है।
सेरेक्स

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

1
मेरी पिछली टिप्पणी (संपादित करने के लिए बहुत देर हो चुकी है) को स्पष्ट करने के लिए: हर बार जब आप एक मेजबान का प्रावधान करते हैं, तो एक नया होस्ट-कुंजी हथियाना, StrictHostKeyChecking = no सेट करने से अलग नहीं है। उनमें से किसी के साथ आप आँख बंद करके भरोसा कर रहे हैं कि जो भी कुंजी हर बार आपके द्वारा भेजे गए प्रावधान को भेजेगी। यदि आपको लगता है कि एक MITM हमले की संभावना नहीं है, तो इन दो लेखों को पढ़ें । Github एक बड़ा लक्ष्य होगा।
यूनिक्स

1

मुझे यकीन नहीं है कि मैं इस प्रश्न को समझता हूं, लेकिन मुझे लगता है कि आप ज्ञात_होस्ट प्रॉम्प्ट को अनदेखा करना चाहते हैं या इसे पूरी तरह से बचना चाहते हैं, इस स्थिति में:

ssh -o StrictHostKeyChecking = सं

या अन्य सुझाव: http://www.joedog.org/2012/07/ssh-disable-ogn_hosts-prompt/


मैं GitHub होस्ट कुंजी को स्वीकार करने का एक गैर-संवादात्मक तरीका चाहता हूं (क्योंकि यह बैश स्क्रिप्ट में होगा)।
एंड्रयू

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