2015-08-30 5 views
77

क्या उत्तरदायी द्वारा बनाई गई एसएसएच प्रामाणिकता जांच को अनदेखा करने का कोई तरीका है? उदाहरण के लिए जब मैं सिर्फ सेट किया हुआ एक नया सर्वर मैं इस सवाल का जवाब देने के लिए हाँ है:उत्तरदायी एसएसएच प्रामाणिकता जांच को अनदेखा कैसे करें?

GATHERING FACTS *************************************************************** 
The authenticity of host 'xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx)' can't be established. 
RSA key fingerprint is xx:yy:zz:.... 
Are you sure you want to continue connecting (yes/no)? 

मुझे पता है कि यह आम तौर पर एक बुरा विचार है, लेकिन मैं एक स्क्रिप्ट है कि पहले एक नया बनाता में यह शामिल कर रहा हूँ मेरे क्लाउड प्रदाता पर वर्चुअल सर्वर और फिर इसे कॉन्फ़िगर करने के लिए स्वचालित रूप से मेरी उत्तरदायी प्लेबुक को कॉल करता है। मैं स्क्रिप्ट निष्पादन के बीच में किसी भी मानव हस्तक्षेप से बचना चाहता हूं।

उत्तर

117

दो विकल्प हैं - पहले, के रूप में आप अपने खुद के जवाब में कहा, वातावरण चर ANSIBLE_HOST_KEY_CHECKING गलत पर सेट कर रहा है।

दूसरा तरीका यह एक ansible.cfg फ़ाइल में रख रहा है स्थापित करने के लिए, और है कि क्योंकि आप या तो सेट कर सकते हैं कि विश्व स्तर पर एक वास्तव में उपयोगी विकल्प है (सिस्टम या उपयोगकर्ता स्तर पर, /etc/ansible/ansible.cfg या ~/.ansible.cfg में), या एक में उसी निर्देशिका में कॉन्फ़िगर फ़ाइल जो आप चल रहे प्लेबुक के रूप में करते हैं।

[defaults] 
host_key_checking = False 

तुम भी या नहीं, जैसे अन्य काम चूक का एक बहुत सेट कर सकते हैं, पर तथ्यों को इकट्ठा करने के:

कि ऐसा करने के लिए, यह उन स्थानों में से एक में एक ansible.cfg फ़ाइल बनाने के लिए, और शामिल एक नाटक की शुरूआत, चाहे कई जगहों पर घोषित हैंश को मर्ज करना है या किसी दूसरे के साथ प्रतिस्थापित करना है, और इसी तरह। उत्तरदायी दस्तावेज़ों में here विकल्पों की एक पूरी बड़ी सूची है।


संपादित करें: सुरक्षा पर एक नोट।

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

अब रहते EC2 उदाहरणों के लिए

, यह मतलब होगा एक कार्य रन केवल एक बार उदाहरण के प्रारंभिक निर्माण पर साथ होस्ट कुंजी स्वीकार करने के लिए:

- name: Write the new ec2 instance host key to known hosts 
    connection: local 
    shell: "ssh-keyscan -H {{ inventory_hostname }} >> ~/.ssh/known_hosts" 

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

  • छोड़ दो आवारा VM, अल्पकालिक के लिए स्वचालन के खिलाफ इकाई परीक्षण के लिए प्लेबुक के साथ डिफ़ॉल्ट (~/.ansible.cfg में)
  • अक्षम होस्ट कुंजी playbooks आप अल्पकालिक उदाहरणों के खिलाफ चलाए के लिए काम निर्देशिका में जाँच (./ansible.cfg रूप से सक्षम जाँच EC2 उदाहरणों)
+5

किसी पता है कि सबसे अच्छा अभ्यास यहाँ है: चल रहा है वह वातावरण चर ANSIBLE_HOST_KEY_CHECKING = झूठी उदाहरण इसके लिए ansible-प्लेबुक? उदाहरण के लिए, आप समय-समय पर अपने ज्ञात मेजबान को रीसेट करने के लिए एक स्क्रिप्ट चला सकते हैं, जो अधिक सुरक्षित होगा (जब तक उस विंडो को छोड़कर एमआईटीएम हमले के अधीन न हो)। डिफ़ॉल्ट रूप से प्रामाणिकता को अनदेखा करना एसएसएच प्राथमिक सुरक्षा तंत्र में से एक को हटा देता है – TonyH

+3

मुझे अपनी टीम का उपयोग करने वाला पैटर्न पसंद है: हम ansible.cfg फ़ाइलों को डालते हैं जो प्लेबुक के लिए काम करने वाली निर्देशिकाओं में मेजबान कुंजी जांच अक्षम करते हैं जो हम क्षणिक उदाहरणों के खिलाफ चलते हैं (यूनिट परीक्षण जो योनि वीएम पर चलते हैं , एडब्ल्यूएस ec2 उदाहरण, आदि) और प्रणाली स्तर पर सक्षम जांच छोड़ दें। – nikobelia

+1

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

17

मुझे जवाब मिला, आपको पर्यावरण परिवर्तनीय ANSIBLE_HOST_KEY_CHECKING से False सेट करने की आवश्यकता है। उदाहरण के लिए:

ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook ... 
1
आगे nikobelia

जो लोग जेनकींस का उपयोग कर खेलने पुस्तक चलाने के लिए करने के लिए

, मैं सिर्फ इससे पहले कि मेरे जेनकींस काम करने के लिए जोड़ा

export ANSIBLE_HOST_KEY_CHECKING=False 
ansible-playbook 'playbook.yml' \ 
--extra-vars="some vars..." \ 
--tags="tags_name..." -vv 
संबंधित मुद्दे