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


107

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

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

जवाबों:


138

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

बैच मोड

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

नमूना उपयोग:

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

इसने मेरे लिए सार्वजनिक कुंजी प्रमाणीकरण अक्षम कर दिया। हालाँकि, मैं ssh user @ host -C somecommand के रूप में निर्दिष्ट कर रहा था। मेरे लिए काम करने में बस क्या हैssh user@host -oPreferredAuthentications=publickey -C 'echo success'
एबी कैरोल

20

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

PasswordAuthentication no

और सर्वर पर पासवर्ड ऑथेंटिकेशन को डिसेबल करने के लिए, वही लाइन जोड़ें /etc/ssh/sshd_configऔर रीस्टार्ट करें sshd


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

7
यह पासवर्ड प्रॉम्प्ट को रोकता नहीं है। ओपी की पटकथा अभी भी लटकेगी।
यहोशू 20

11

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


4
क्लाइंट नहीं मानने के लिए +1 खुलता है :-)
कैस

8

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

PreferredAuthentications=publickey

मुझे लगता है कि, कमांड लाइन पर, आपको विकल्प को उद्धरण में लपेटने की आवश्यकता है और फिर इसे -o विकल्प में पास करें।
क्रेग वॉकर

3
@ क्रैगवल्कर आप इसे पास भी कर सकते हैं, जैसे किssh -o PreferredAuthentications=publickey
टोबियास किंजलर

@CraigWalker यदि आप विकल्प और मूल्य को अलग करने के लिए रिक्त स्थान का उपयोग करना चाहते हैं तो आपको उद्धरण चिह्नों की आवश्यकता हैssh "-oPreferredAuthentications publickey"
Timo
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.