2015-02-11 8 views
14

के दौरान मेजबान शेल स्क्रिप्ट में मेजबान की प्रामाणिकता स्थापित नहीं की जा सकती है जब मैं 'हां' को अनदेखा या पास नहीं कर सकता हूं, मैं स्वचालित रूप से 'हां' प्रदान करना चाहता हूं या इसे अनदेखा करना चाहता हूं और एक सुरक्षित तरीके से आगे बढ़ना चाहता हूं, जब नीचे दिया गया कथन आता है मेरी उम्मीद शेल लिपि के निष्पादन के दौरान?ऑटोमेशन

#!/usr/bin/expect 
spawn ssh [email protected]$host 

मेजबान की प्रामाणिकता 'abcdef (10.566.1.98)' स्थापित नहीं किया जा सकता है। आरएसए कुंजी फिंगरप्रिंट जेके: 94: बीए: 9 3: 0 बी: ईबी: एफएफ: डीएफ: ईए: gh: hj: 23: 3c: hj: 9c: be। क्या आप वाकई कनेक्ट करना जारी रखना चाहते हैं (हां/नहीं)?

+4

"सुरक्षित" और उम्मीद आमतौर पर हाथ में नहीं जाते हैं। यदि आप यह जानना चाहते हैं कि यह वैध है तो आप आरएसए फिंगरप्रिंट को स्वचालित रूप से स्वीकार कर रहे हैं तो कोई गारंटीकृत तरीका नहीं है। – mmmmmpie

उत्तर

2

इस परिदृश्य के लिए exp_continue का उपयोग करें।

#!/usr/bin/expect 
set prompt "#|>|\\\$" 
spawn ssh [email protected] 
expect { 
     #If 'expect' sees '(yes/no)', then it will send 'yes' 
     #and continue the 'expect' loop 
     "(yes/no)" { send "yes\r";exp_continue} 
     #If 'password' seen first, then proceed as such. 
     "password" 
} 
send "root\r" 
expect -re $prompt 

संदर्भ: Expect

+0

धन्यवाद दिनेश !! .. यह पूरी तरह से काम करता है! .. लेकिन मैं संकेत सेट करता हूं और अंतिम कमांड उम्मीद करता हूं - $ $ प्रॉम्प्ट..यह उन लोगों के बिना काम करता है! –

15

यह इस सवाल से बचने और सभी आने वाली कुंजियों no का उपयोग कर ssh ग्राहक विकल्प StrictHostKeyChecking सेट द्वारा automaticatilly स्वीकार (डिफ़ॉल्ट सेटिंग ask है, जो कि प्रश्न में यह परिणाम है) करने के लिए संभव है:

ssh -o StrictHostKeyChecking=no "[email protected]$host" 

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

ssh \ 
    -o UserKnownHostsFile=PATH_TO_YOUR_KNOWN_HOSTS_FILE \ 
    -o StrictHostKeyChecking=yes "[email protected]$host" 

इस तरह से आप ' चेक विफल होने पर प्रश्न से बच जाएगा, और एसएसएच नॉन-शून्य निकास स्थिति में परिणाम देगा।

+0

+1। हाँ, एक और मामला जहां स्वीकृत उत्तर पीछे है ... आप प्रति ** मेजबान पर अपने ** ~/.ssh/config ** में 'StrictHostKeyChecking = no' सेट कर सकते हैं। –

+0

@JLPeyret यदि आप पहले से ही अपने मेजबान जानते हैं और उन्हें व्यक्तिगत रूप से सेट अप करने के इच्छुक हैं, तो आप उनके लिए उचित कुंजी भी सेट कर सकते हैं? – GreyCat

+0

शेफ-आधारित ऑटो इंस्टॉल। मुझे ज्ञात_होस्ट को पूर्ववत करना होगा। जोखिम कम है, यह एक कम विशेषाधिकार गिट उपयोगकर्ता के खिलाफ एक गिट लाता है। सब कुछ ठीक से स्थापित है, AFAIK, लेकिन यह एक ज्ञात मेजबान नहीं है, स्थापित मशीन पर, फिर भी जब शेफ –

संबंधित मुद्दे