SSH सार्वजनिक कुंजी - कोई समर्थित प्रमाणीकरण विधियाँ उपलब्ध नहीं हैं (सर्वर ने सार्वजनिक कुंजी भेजी है)


80

मेरे पास एक वर्चुअल मशीन में एक 12.10 सर्वर सेटअप है जिसके नेटवर्क को ब्रिड करने के लिए सेट किया गया है (अनिवार्य रूप से मेरे स्विच से जुड़े कंप्यूटर के रूप में देखा जाएगा)।

मैं के माध्यम से Openshd स्थापित किया है apt-getऔर अपने उपयोगकर्ता नाम और पासवर्ड के साथ पोटीन का उपयोग कर सर्वर से कनेक्ट करने में सक्षम था।

फिर मैं इसे सार्वजनिक / निजी कुंजी प्रमाणीकरण का उपयोग करने के लिए प्राप्त करने की कोशिश कर रहा हूं। मैंने निम्नलिखित कार्य किया:

  1. पुट्टीजेन का उपयोग कर चाबियाँ तैयार की।
  2. सार्वजनिक कुंजी पर ले जाया गया /etc/ssh/myusername/authorized_keys(मैं एन्क्रिप्टेड होम निर्देशिकाओं का उपयोग कर रहा हूं)।
  3. ऐसे सेट करें sshd_config:

    PubkeyAuthentication yes
    AuthorizedKeysFile /etc/ssh/%u/authorized_keys
    StrictModes no
    PasswordAuthentication no
    UsePAM yes
    

जब मैं पोटीन या WinSCP का उपयोग करके कनेक्ट करता हूं, तो मुझे एक त्रुटि मिलती है जो कहती है कि कोई समर्थित प्रमाणीकरण विधि उपलब्ध नहीं है (सर्वर ने सार्वजनिक कुंजी भेजा है)।

यदि मैं sshdडिबग मोड में चलता हूं , तो मैं देखता हूं:

PAM: initializing for "username"
PAM: setting PAM_RHOST to "192.168.1.7"
PAM: setting PAM_TTY to "ssh"
userauth-request for user username service ssh-connection method publickey [preauth]
attempt 1 failures 0 [preauth]
test whether pkalg/pkblob are acceptable [preauth[
Checking blacklist file /usr/share/ssh/blacklist.RSA-1023
Checking blacklist file /etc/ssh/blacklist.RSA-1023
temporarily_use_uid: 1000/1000 (e=0/0)
trying public key file /etc/ssh/username/authorized_keys
fd4 clearing O_NONBLOCK
restore_uid: 0/0
Failed publickey for username from 192.168.1.7 port 14343 ssh2
Received disconnect from 192.168.1.7: 14: No supported authentication methods available [preauth]
do_cleanup [preauth]
monitor_read_log: child log fd closed
do_cleanup
PAM: cleanup

ऐसा क्यों हो रहा है और मैं इसे कैसे ठीक कर सकता हूं?


मेरे मामले में, मेरे पास दो AWS उदाहरण हैं। उनमें से एक निर्दोष रूप से काम कर रहा है, दूसरा जो इंटेलीज आइडिया के माध्यम से जुड़ने पर काम कर रहा है, लेकिन पुट्टी से नहीं, लेकिन यह शुरुआत में काम कर रहा था। तो मेरे मामले में यह पोटीन के बारे में कुछ होना चाहिए
Marian Klühspies

जवाबों:


70

समस्या सुलझ गयी:

लगता है कि मेरी सार्वजनिक कुंजी फ़ाइल में कोई समस्या थी। PuttyGen एक सार्वजनिक कुंजी फ़ाइल बनाएगी जो इस तरह दिखाई देती है:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20121022"
AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwu
a6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOH
tr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/u
vObrJe8=
---- END SSH2 PUBLIC KEY ----

हालाँकि, यह काम नहीं करेगा, इसलिए आपको क्या करने की ज़रूरत है, पुट्टीगैन में कुंजी खोलें और फिर इसे वहां से कॉपी करें (यह कुंजी सही प्रारूप में और 1 पंक्ति में हो सकती है):

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022

इसमें चिपकाएँ authorized_keysतो यह काम करना चाहिए।


1
मैंने authorized_keysvi में खोला और लाइन ब्रेक के सभी को हटा दिया और यह काम किया।
ल्यूक

1
सार्वजनिक कुंजी फ़ाइल कहाँ स्थित है? मैं केवल पोटीन का उपयोग कर रहा हूं।
सिलेर

1
मैंने ऊपर सभी चीजें कीं, लेकिन फिर भी सर्वर भेज रहा है कोई समर्थित प्रमाणीकरण विधियां उपलब्ध नहीं हैं (सर्वर ने सार्वजनिक कुंजी भेजा)
अल-अलामिन

आपको कैसे पता चला कि यह काम नहीं करेगा / आपको अपेक्षित प्रारूप कहां से मिला?
माइकल

जहां मुझे पेस्ट की आवश्यकता होती है, जब आप कहते हैं "अधिकृत_कीप्स में पेस्ट करें तो यह काम करना चाहिए।" @ F21
महेंद्र रेड्डी यासा

19
  1. /etc/ssh/sshd_configफ़ाइल को संपादित करें ।
  2. बदलें PasswordAuthenticationऔर ChallengeResponseAuthenticationकरने के लिए yes

3 ए। पुनः आरंभ करें ssh /etc/init.d/ssh restart
या
3 ब। आप बेहतर उपयोग करेंservice sshd restart


वास्तव में यह उपयोगी टिप्पणी है अगर आपको vie ftp सॉफ्टवेयर्स को जोड़ने में परेशानी है
cnu

ये मेरे लिए सही है!
असिनॉक्स

8
कुंजी फ़ाइल के माध्यम से प्रमाणीकृत करने का पूरा उद्देश्य के लिए है से बचने के पासवर्ड प्रमाणीकरण, तो वास्तव में आप स्थापित करना चाहिए PasswordAuthenticationकरने के लिए no
पेरे

यह एकमात्र उत्तर है जिसने मेरी मदद की है। मुझे सार्वजनिक / निजी कुंजी प्रमाणीकरण की आवश्यकता नहीं थी, लेकिन मुझे वह अजीब संदेश मिल रहा था।
सर्ज रोजैच

ChallengeResponseAuthenticationइसके बारे में धन्यवाद , इसने मेरे लिए समस्या का समाधान किया डेबियन 10.0
realtebo

10

बस एक टिप मुझे आशा है कि मेरे पास सिरदर्द के साथ किसी और की मदद हो सकती है। F21 सही है कि आपको फ़ाइल को सहेजने के बजाय PuTTYGen विंडो से कुंजी को कॉपी करने की आवश्यकता है, लेकिन कॉपी करने के बाद, आपके पेस्ट करने के तरीके पर महत्वपूर्ण प्रभाव पड़ सकता है कि आपकी कुंजी काम करेगी या नहीं। कुछ संपादक टेक्स्ट को पेस्ट करते ही बदल देंगे, या नईलाइन के साथ कुछ करेंगे या ऐसा कुछ करेंगे जो अधिकृत_की फ़ाइल को अमान्य बनाता है।

मैंने जो पाया है, उसके टूटने की कम से कम संभावना है, पूर्ण स्ट्रिंग को प्रतिध्वनित करना और आउटपुट को फ़ाइल पर पुनर्निर्देशित करना है। कमांड लाइन की कुंजी स्ट्रिंग पेस्ट करने के लिए PuTTY में राइट-क्लिक करना, यह इस तरह से काम करता है (ऊपर दिए गए उदाहरण के साथ):

echo [right-click-to-paste-here] > /etc/ssh/username/authorized_keys

आप इसे समाप्त करेंगे:

echo ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022 > /etc/ssh/username/authorized_keys

इस विधि का एक अन्य लाभ यह है कि आप इस तरह से कई कुंजियाँ जोड़ सकते हैं> का उपयोग करके> के बजाय> को अधिलेखित करने के लिए, जैसे:

echo ssh-rsa AAAAB3<...snip...>rJe8= rsa-key-20121022 >> /etc/ssh/username

आशा है कि किसी की मदद करता है।


यह 4096 बिट्स कुंजियों के लिए काम नहीं करता है ... यह मुझे लगता है कि पात्रों के लिए टर्मिनल सीमा से अधिक है
फ्रीडो

1
बाद में अपने बैश इतिहास से इसे हटाने के लिए एक अच्छा विचार नहीं हो सकता है।
जेसन पॉवर्स मरे

@JasonPowersMurray: यह एक सार्वजनिक कुंजी है। सार्वजनिक कुंजी क्रिप्टोग्राफी प्रणाली को सुरक्षित जब कुंजी प्रकाशित किया जाता है रहने के लिए बनाया गया है, तो यह पार्टी के इतिहास में और कहीं और सार्वजनिक कुंजी लॉग इन करने की कोई बात नहीं।
डेविड कैरी

9

हम पहले से ही सही प्रकार की कुंजी (pem के बजाय ppk) का उपयोग कर रहे थे।

हमारे मामले में, यह सर्वर उपयोगकर्ता फ़ोल्डर पर अधिकृत_की के लिए फ़ाइल अनुमतियों के साथ एक समस्या थी। यह होना चाहिए -rw-r - r-- ... यह -rw-rw-r-- था

ssh फ़ाइल पर्म के बारे में बहुत बारीक है।


मुझे सही दिशा की ओर इशारा करने के लिए धन्यवाद। हमारे मामले में स्वामी और अनुमति दोनों गलत थे।
ज़ोलोती

फ़ाइल अनुमतियों को कैसे बदला जाए क्योंकि हम ssh के माध्यम से पहुँच नहीं पा रहे हैं? ऐसा करने का कोई और तरीका?
JIT

1
खान भी एक स्वामित्व, समूह, और अनुमति समस्या थी। जैसा कि यहां दिखाया गया है ( stackoverflow.com/a/36808935/384670 ), मुझे जिन अनुमतियों का उपयोग करना था, वे फ़ाइल के लिए 600 और निर्देशिका के लिए 700 थीं। मैंने प्रश्न में इस गैर-रूट उपयोगकर्ता के लिए स्वामी और समूह को भी बदल दिया।
एम काट्ज़

5

हल किया:

  1. आपको पोटीन को डाउनलोड करने और एक सार्वजनिक और एक निजी कुंजी बनाने की आवश्यकता है।
  2. मैंने अपनी निजी कुंजी को एक पासवर्ड सौंपा है।
  3. फिर पोटीन में निजी कुंजी को कॉन्फ़िगर करें। पोटीन-> एसएसएच-> प्रामाणिक-> अपने निजी में ब्राउज़ करें।
  4. सुनिश्चित करें कि आपके पास निजी और सार्वजनिक कुंजी के लिए एक ही रास्ता है।
  5. आपको सर्वर पर सार्वजनिक कुंजी को कॉन्फ़िगर करने की आवश्यकता है। (मेरे मामले में मैंने सर्वर आदमी से बात की है और पूछा है कि क्या वह सर्वर में मेरी सार्वजनिक कुंजी जोड़ सकता है)। आपको दूसरे पक्ष (सर्वर) कनेक्शन में सार्वजनिक कुंजी की आवश्यकता है।

2
"सुनिश्चित करें कि आपके पास निजी और सार्वजनिक कुंजी के लिए एक ही रास्ता है।" उसका इससे कुछ लेना - देना नहीं है। आपको अपनी सार्वजनिक कुंजी अपने निजी के पास नहीं
रखनी है

5

मेरे मामले में कारण यह था कि निजी कुंजी फ़ाइल (.ppk) को पोटीन प्रमाणीकरण एजेंट यानी पेजेंट में हटा दिया गया था। मैंने अभी इसे फिर से पेजेंट में अपडेट किया और कनेक्शन उसके बाद पूरी तरह से काम किया।

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