बाश लिपि में उत्तर दें


24

मैं एक git cloneट्रफ को बैश स्क्रिप्ट करने की कोशिश कर रहा हूं , लेकिन पहली बार जब मैं स्क्रिप्ट चलाता हूं और सर्वर को ज्ञात नहीं होता है कि स्क्रिप्ट विफल हो गई है। मेरे पास कुछ इस तरह है:

yes | git clone git@github.com:repo/repoo.git
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? 

लेकिन यह अनदेखी कर रहा है yes। क्या आप जानते हैं कि git cloneज्ञात मेजबानों की कुंजी जोड़ने के लिए कैसे मजबूर किया जाए?


किस बारे में echo yes | git clone git@github.com:repo/repoo.git?
asfallows

3
@asfallows, elRafael: echo yesएक अच्छा दृष्टिकोण नहीं है: दूसरी बार जब आप कमांड चलाते हैं, तो ssh यह नहीं पूछेगा कि क्या आप जारी रखना चाहते हैं क्योंकि सर्वर कुंजी पहले से ही ज्ञात होगी।
गिल्स एसओ- बुराई को रोकना '

जवाबों:


21

अपनी ~/.ssh/configफ़ाइल में निम्न जोड़ें :

Host github.com
    StrictHostKeyChecking no

दूरस्थ शेल (git क्लाइंट के साथ) को स्थापित करने के लिए खुले ssh क्लाइंट का उपयोग करके कुछ भी चेक को github.com पर छोड़ देना चाहिए।

यह वास्तव में एक बुरा विचार है क्योंकि चेक को लंघन के किसी भी रूप में (चाहे आप स्वचालित रूप से हां में झटका दें या पहले स्थान पर चेक को छोड़ दें) मध्य सुरक्षा समझौते में एक आदमी के लिए जगह बनाता है। एक बेहतर तरीका यह होगा known_hostsकि कुछ स्क्रिप्ट को चलाने के लिए स्वचालित रूप से कनेक्ट होने वाली ज़रूरत से पहले फ़िंगरप्रिंट को पुनः प्राप्त और मान्य करना होगा और फ़ाइल में संग्रहीत करना होगा ।


2
फिंगरप्रिंटknown_hosts को पुनः प्राप्त करने और मान्य करने के लिए एक मजबूत वरीयता के साथ और इसे पहले फ़ाइल में संग्रहीत करें
गिल्स एसओ- बुराई को रोकना '

1
आपके उत्तर के लिए बहुत-बहुत धन्यवाद, मैंने जाना-पहचाना_होल्स में फिंगर प्रिंट जोड़ने के दृष्टिकोण का अनुसरण किया। यह अधिक सुरक्षित जैसा है :)
राफेल

ओह मैं ऐसा करने के लिए कठपुतली का उपयोग कर रहा हूं। अगर कोई इसे इस्तेमाल करने में दिलचस्पी रखता है, तो यह नुस्खा है: gist.github.com/1155725
राफेल

5

yesआउटपुट y। RSA कुंजी स्वीकृति की आवश्यकता है yes। आप के बजाय yes yes | git clone git@github.com:repo/repoo.gitइतना yesआउटपुट की कोशिश कर सकते yesहैं y


5
किसी कारण के लिए, यह मेरे लिए git क्लोन के साथ काम नहीं किया।
मैट वी।

न ही इसने मेरे लिए काम किया। भी echo "yes" | ...नहीं करता है मुझे लगता gitहै कि पाइपिंग स्वीकार नहीं करता है। शायद केवल कुछ संस्करण में?
.उंडन

3

ssh-keyscan -H github.com >> ~/.ssh/known_hostsक्लोनिंग से पहले दौड़ना कुंजी जोड़ देगा और शीघ्र दिखाई देने से रोक देगा।

बेशक यह दृष्टिकोण MITM हमले के लिए भी असुरक्षित है।


1

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

मैंने इसे मैन्युअल रूप से कनेक्ट करके और रजिस्ट्री कुंजी ढूंढकर और स्क्रिप्ट की शुरुआत में आयात करके हल किया। लिनक्स में यह समान सामान्य विचार होना चाहिए: आप इस सर्वर को विश्वसनीय मेजबानों की सूची में जोड़ना चाहते हैं ताकि ssh आपसे यह न पूछें कि क्या आप हर बार उस पर भरोसा करते हैं।

एक बार जब आप मैन्युअल रूप से कनेक्ट हो जाते हैं, तो कुंजी फ़ाइल ढूंढें और इसे अपनी ज्ञात_होस्ट फ़ाइल में जोड़ें। इस तरह ssh उस फ़ाइल को देखेगा, मान लें कि आप जानते हैं कि आप क्या कर रहे हैं और फिंगरप्रिंट के बारे में पूछे बिना आगे बढ़ें।

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