केवल ssh क्लाइंट को पासवर्ड पासवर्ड का उपयोग करने के लिए कैसे बाध्य करें?


375

अगर मैं उदाहरण के लिए pubkey Cort का उपयोग करता हूं: एक Ubuntu 11.04 मैं ssh क्लाइंट को केवल सर्वर पर पासवर्ड पासवर्ड का उपयोग करने के लिए कैसे सेट कर सकता हूं? (सिर्फ सर्वर पर पासवर्ड के परीक्षण की वजह से, जहां मैं कुंजी के साथ डिफ़ॉल्ट रूप से लॉग इन करता हूं)

मुझे एक रास्ता मिल गया है:

mv ~/.ssh/id_rsa ~/.ssh/id_rsa.backup
mv ~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub.backup

और अब मुझे पासवर्ड के लिए संकेत मिलता है, लेकिन क्या कोई आधिकारिक तरीके हैं?

जवाबों:


578

मुझे हाल ही में भी इसकी आवश्यकता थी, और इसके साथ आया:

ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no example.com

आपको यह सुनिश्चित करने की आवश्यकता है कि क्लाइंट पासवर्ड प्रमाणीकरण को अस्वीकार करने के लिए कॉन्फ़िगर नहीं किया गया है।


4
मुझे एक ऐसे वातावरण में प्रदर्शित होने के लिए पासवर्ड प्रॉम्प्ट को लागू करने की आवश्यकता थी, जहां करबरोस को स्वचालित प्रमाणीकरण के लिए उपयोग किया जाता था, और इसी तरह की कमांड ने मेरे लिए उस विशिष्ट स्थिति में काम किया: ssh -o GSSAPIAuthentication=no example.com
इल्विलजा

21
अच्छा लगा। केवल -o PubkeyAuthentication=noमेरे मामले में पर्याप्त था।
10

10
: एक दोस्त OSX लैपटॉप में ssh करने के लिए, मैं का इस्तेमाल किया था -o PreferredAuthentications=keyboard-interactive -o PubkeyAuthentication=no बजाय
गुइडो

4
यह मेरे लिए काम नहीं करता है। यह कहता रहता है: अनुमति से इनकार (publickey)। और कभी भी पासवर्ड संकेत नहीं देता है।
रीइनरईयरपोस्ट

7
@reinierpost संभव है कि ssh होस्ट अक्षम हो गया है PasswordAuthentication। वास्तव में, मैं यहां हूं क्योंकि मैं परीक्षण करना चाहता था कि पासवर्ड होस्ट को अक्षम करने से मेरे मेजबान पर सही तरीके से काम हो।
रबरडुक

168

मैंने इस उद्देश्य के लिए एक शॉर्टकट खोजा है:

ssh user:@example.com

कोलन ( :) और उसके बाद खाली पासवर्ड पर ध्यान दें।


2
अभी तक कोई दस्तावेज नहीं। वास्तव में, मैंने ओपनएसएसएच स्रोत कोड के माध्यम से बिना किसी लाभ के स्किम्ड किया है (इसका पार्सिंग चरण बल्कि गूढ़ है और यह सुबह का समय :) है)। मेरी प्रारंभिक प्रेरणा: यदि आप खाली पासवर्ड देते हैं, तो कई क्लाइंट पासवर्ड के लिए संकेत देते हैं, जैसेmysql -u user -p
हैल gzgür

43
यह अब काम नहीं करता है, कम से कम मेरे मामले में नहीं। sshक्लाइंट आँख बंद करके किसी नए इंस्टॉल किए गए सर्वर को प्रमाणित करने के लिए असंबंधित निजी कुंजियों की कोशिश कर रहा था और पासवर्ड की मांग किए बिना अधिकतम मात्रा में कोशिश किए जाने के कारण खारिज कर दिया जा रहा है। इस पहले कनेक्शन के लिए पासवर्ड प्रमाणीकरण के लिए बाध्य करने के लिए, मुझे -o PreferredAuthentications=passwordसिंटैक्स का उपयोग करना पड़ा , कोलन ट्रिक जिसका कोई ध्यान देने योग्य प्रभाव नहीं है। इसलिए जब यह ट्रिक आज़माई जा सकती है, तो किसी को इस पर निर्भर नहीं होना चाहिए।
व्हाइटवर्थवुल्फ

2
@ हैलिलजर्ग: दुखद समाचार, यह याद रखना और टाइप करना बहुत आसान था ;)
व्हाइटवॉर्नवुल्फ

3
@Qualcuno के रूप में व्हाइटवॉटरवॉल्फ ने कहा, यह दुर्भाग्य से अब कुछ प्लेटफार्मों पर काम नहीं करता है।
हालिल Halzgür

2
सुनिश्चित करें कि आपके पास अपने ssh_config फ़ाइल पर पासवर्डअनुभव नहीं है!
ब्रायन

32

स्कूपर द्वारा पोस्ट की गई विधि के साथ-साथ, आप अपने ssh क्लाइंट कॉन्फ़िगरेशन फ़ाइल में प्रति होस्ट विकल्प सेट कर सकते हैं।

अपनी .sshनिर्देशिका में, config(यदि यह पहले से मौजूद नहीं है) नामक फ़ाइल बनाएं और अनुमतियाँ सेट करें 600, तो आप उन अनुभागों को बना सकते हैं जो इसके साथ शुरू होते हैं

host <some hostname or pattern>

और फिर उसके बाद प्रति होस्ट विकल्प सेट करें, उदाहरण के लिए,

host bob.specific.foo
user fred

host *.home.example
user billy
port 9191

तो आप कर सकते थे

host server.to.test
PubkeyAuthentication=no

उस फ़ाइल में, और फिर बस

ssh server.to.test

और विकल्प उठाया जाएगा।


इस उत्तर के लिए धन्यवाद। मैंने अपनी प्रविष्टि बनाई ~/.ssh/configऔर जोड़ाPubkeyAuthentication no
क्रेग लंदन

2
मेरे लिए काम नहीं करता है।
रीइन्टीरियरपोस्ट

11

मुझे हाल ही में इसकी आवश्यकता थी, लेकिन ऊपर दिए गए विकल्पों में से किसी ने भी काम नहीं किया, यह ssh -vदिखाया कि -oस्विच के माध्यम से पारित कमांड-लाइन विकल्प मेरी ~/.ssh/configफ़ाइल में निर्दिष्ट मानों द्वारा ओवर-राइड किए गए थे ।

क्या काम किया था:

ssh -F /dev/null <username>@<host>

से sshआदमी पेज:

 -F configfile
     Specifies an alternative per-user configuration file.  If a
     configuration file is given on the command line, the system-wide
     configuration file (/etc/ssh/ssh_config) will be ignored. The default 
     for the per-user configuration file is ~/.ssh/config.

इस उत्तर का श्रेय: मैं ssh को .ssh / config कैसे अनदेखा कर सकता हूँ?


1
इस सवाल का जवाब नहीं है। आपके पास हमेशा एजेंट में संग्रहीत कुंजी हो सकती है और आपका दृष्टिकोण क्लाइंट को उनका उपयोग करने से नहीं रोकेगा।
जकूजी

हम्म, उस मुद्दे के साथ-साथ मेरे उत्तर में वर्णित एक का कैसे निवारण किया जाएगा ?
एडील

2
यदि आपके पास मानक स्थान (प्रश्न के अनुसार) में चाबियाँ हैं, तो उनका उपयोग किया जाएगा, भले ही कॉन्फ़िगरेशन मौजूद हो या न हो। मैं पहले उत्तरों में बताए गए तरीकों में से एक के साथ जाऊंगा।
जकूजी

बिल्कुल सच नहीं है, मैंने अभी-अभी अपने लुबंटू 14.04 पर इसका परीक्षण किया और मानक स्थान पर मेरी चाबी होने के बावजूद ~/.ssh/config, यदि मैं निर्दिष्ट करता हूं तो चाबी का उपयोग नहीं किया जाता है -F /dev/nullssh -vआउटपुट इस मामले में मदद करता है, यह स्पष्ट रूप से दिखाता है कि क्योंकि मेरे पास ssh config में कैच-ऑल एंट्री है *, इसलिए यह -oपूर्व के उत्तरों के अनुसार स्विच के माध्यम से दिए गए विकल्पों के सम्मान के बजाय सार्वजनिक कुंजी का उपयोग करने का चुनाव करता है।
१५

1
मानक स्थान ~/.ssh/id_rsaमैनुअल पेज में बताया गया है। इन रास्तों को क्लाइंट में हार्डकोड किया जाता है। बस सुनिश्चित करें कि आप परीक्षण करते समय सही उपयोगकर्ता प्रदान करते हैं।
जकूजी

4

मैंने इनमें से कुछ उत्तरों की कोशिश की, लेकिन ssh -vअपनी सार्वजनिक कुंजियों को अपने घर की निर्देशिका से बाहर निकालते हुए दिखाते रहे। हालाँकि, एक फर्जी पहचान फ़ाइल को निर्दिष्ट करने ने मेरे लिए चाल चली:

ssh -i /dev/null host

मुझे यह स्थायी रूप से करना है (एपीसी रैक-माउंटेड पीडीयू में टूटे एसएसएच सर्वर के आसपास काम करने के लिए - अगर आप सुरक्षा की परवाह करते हैं तो इन चीजों से बहुत दूर रहें - इसलिए मैंने विकल्प को अपनी कॉन्फ़िगरेशन फ़ाइल में डाल दिया:

Host apc1 apc2
KexAlgorithms +diffie-hellman-group1-sha1
IdentityFile /dev/null

2

@scoopr और @Hilil ürzgür के जवाबों ने मेरे लिए काम नहीं किया।

यह मेरे लिए काम किया:

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@example.com

स्रोत: http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html


13
सवाल पासवर्ड द्वारा क्लाइंट प्रमाणीकरण के बारे में है। यह उत्तर यह जाँचने के बारे में है कि क्या सर्वर होस्ट्स को ज्ञात होस्ट में से मेल खाता है। इसके प्रभाव में यह एक अलग प्रश्न का उत्तर दे रहा है
Anigel

2

और यह भी सुनिश्चित करें, कोई BatchMode=yes.ssh / config में सक्रिय नहीं है। अन्यथा आपको कोई मौका नहीं मिला, एक इंटरैक्टिव पासवर्ड प्रॉम्प्ट प्राप्त करने के लिए।


0

मैं इस मुद्दे के साथ दुनिया में केवल एक ही हो सकता हूं, लेकिन मेरे पास एक sshअन्य ऑपरेटिंग सिस्टम से चल रहा था (एक साइबर शेल में विंडोज में चोक ssh)which ssh

तो समाधान था

 /usr/bin/ssh user@example.com

पूरा रास्ता नोट करें। मेरे दौड़ने के बाद मैंने ऐसा कियाcyg-get openssh

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