सवाल सार्वजनिक-कुंजी प्रमाणीकरण विफल होने पर मैं पासवर्ड के लिए संकेत देने के बजाय एसएसएच विफल कैसे कर सकता हूं?


मुझे एक स्क्रिप्ट मिली है जो सार्वजनिक कुंजी प्रमाणीकरण का उपयोग कर कई सर्वर ssh'es है। सर्वरों में से एक ने कॉन्फ़िगरेशन समस्या के कारण स्क्रिप्ट लॉग को रोकना बंद कर दिया है, जिसका अर्थ है कि स्क्रिप्ट "पासवर्ड:" प्रॉम्प्ट से फंस जाती है, जो स्पष्ट रूप से इसका उत्तर नहीं दे सकती है, इसलिए यह शेष सर्वरों को भी आजमाने की कोशिश नहीं करता है सूची मैं।

क्या एसएसएच क्लाइंट को यह बताने का कोई तरीका है कि कुंजी प्रमाणीकरण विफल होने पर पासवर्ड के लिए संकेत न दें, बल्कि इसके बजाय एक त्रुटि जोड़ने की रिपोर्ट करें और मेरी स्क्रिप्ट को चालू रखें?


91
2017-09-03 10:58


मूल




जवाब:


ओपनएसएसएच के लिए बैचमोड भी है जो पासवर्ड प्रॉम्प्टिंग को अक्षम करने के अलावा कुंजी के लिए पासफ्रेज (ओं) के लिए क्वेरीिंग अक्षम करना चाहिए।

बैच मोड

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

नमूना उपयोग:

ssh -oBatchMode=yes -l <user> <host> <dostuff>

120
2017-09-03 12:09





निम्नलिखित में जोड़ें ~/.ssh/config:

PasswordAuthentication no

और सर्वर पर पासवर्ड प्रमाणीकरण अक्षम करने के लिए, एक ही पंक्ति जोड़ें /etc/ssh/sshd_config और पुनरारंभ करें sshd


12
2017-09-03 11:19



यदि आप सभी एसएसएच क्लाइंट कनेक्शन के लिए पासवर्ड ऑथ अक्षम नहीं करना चाहते हैं, तो आप कमांड लाइन पर विकल्प भी निर्दिष्ट कर सकते हैं। अपने ssh कमांड में '-oPasswordAuthentication = no' जोड़ें। - cas
यह पासवर्ड प्रॉम्प्ट को रोकता नहीं है। ओपी की लिपि अभी भी लटकाएगी। - Joshua Swink


यदि आप ड्रॉपबियर का उपयोग कर रहे हैं, तो बस "-s"पासवर्ड प्रमाणीकरण को अक्षम करने का विकल्प।


9
2017-09-03 11:54



क्लाइंट मानने के लिए +1 openssh है :-) - cas


कमांड लाइन पर (या ~/.ssh/config) आप सेट कर सकते हैं PreferredAuthentications

PreferredAuthentications=publickey

6
2017-09-03 11:39



मुझे लगता है कि, कमांड लाइन पर, आपको कोट्स में विकल्प लपेटने की आवश्यकता है और फिर इसे -o विकल्प में पास करना होगा। - Craig Walker
@CraigWalker आप इसे भी पास कर सकते हैं, यानी। ssh -o PreferredAuthentications=publickey - Tobias Kienzler
@CraigWalker यदि आप विकल्प और मान को अलग करने के लिए रिक्त स्थान का उपयोग करना चाहते हैं तो आपको उद्धरण की आवश्यकता है उदा। ssh "-oPreferredAuthentications publickey" - Timo