ssh अब सार्वजनिक कुंजी प्रमाणीकरण की अनुमति नहीं देता है


22

मेरी मशीन ने हाल ही में आने वाले सार्वजनिक कुंजी प्रमाणीकरण को स्वीकार करना बंद कर दिया है। मेरे पास एक ubuntu 11.04 डेस्कटॉप है जिसे मैं एक विंडोज़ मशीन से देखता हूं। मैं पेजेंट के साथ पोटीन का उपयोग करता हूं। मैं कनेक्ट करने में सक्षम हूं लेकिन केवल इंटरएक्टिव पासवर्ड प्रमाणीकरण के साथ, मेरी rsa कुंजी के साथ नहीं जो मेरे पास सेटअप है।

मैंने पहले ही सत्यापित कर लिया है कि कुंजी ~ / .ssh / अधिकृत_की में सूचीबद्ध है। मैं इसे कैसे ठीक करूं और मैं क्या जांच करूं?


2
पहले जांच लें कि आपके सभी तीन ~, ~/.sshऔर ~/.ssh/authorized_keysकेवल आपके द्वारा लिखित हैं (विशेष रूप से कोई समूह अनुमति नहीं लिखते हैं)। /var/log/auth.logअपने लॉगिन प्रयासों के समय बनाई गई लॉग प्रविष्टियों के लिए देखें । उन्हें अपने प्रश्न में कॉपी-पेस्ट करें (यदि आप चाहें तो गोपनीयता के लिए नामों को संपादित करें)। यह भी जांचें कि समस्या पूरी तरह से सर्वर साइड पर है या नहीं: लिनक्स मशीन पर निजी कुंजी को कॉपी करें (आपको PuTTY की निजी कुंजी फ़ाइल को ओपनएसएसएच प्रारूप में परिवर्तित करने की आवश्यकता होगी) और देखें कि क्या ssh localhostकाम करता है।
गिल्स एसओ- बुराई को रोकना '12

मेरे घर निर्देशिका किसी कारण के लिए उपयुक्त था। यह तय है। इसे एक उत्तर के रूप में रखो ताकि मैं इसे स्वीकार कर सकूं।
एंड्रयू रेड

जवाबों:


28

यदि सार्वजनिक कुंजी प्रमाणीकरण काम नहीं करता है: सुनिश्चित करें कि सर्वर की तरफ, आपके घर की निर्देशिका ( ~), ~/.sshनिर्देशिका, और ~/.ssh/authorized_keysफ़ाइल, सभी केवल उनके स्वामी द्वारा लिखित हैं । विशेष रूप से, उनमें से कोई भी समूह (भले ही उपयोगकर्ता समूह में अकेला हो) द्वारा योग्य नहीं होना चाहिए। chmod 755या chmod 700ठीक है, chmod 770नहीं है।

कुछ गलत होने पर क्या जाँचें:

  • ssh -vvvबहुत सारे डिबगिंग आउटपुट देखने के लिए चलाएँ । यदि आप एक प्रश्न पूछते हैं कि आप ssh से कनेक्ट क्यों नहीं कर सकते हैं, तो इस आउटपुट को शामिल करें (आप होस्ट और उपयोगकर्ता नामों को अज्ञात कर सकते हैं)।
  • यदि आप कर सकते हैं, तो सर्वर लॉग की जांच करें /var/log/auth.log
  • यदि सार्वजनिक कुंजी प्रमाणीकरण काम नहीं कर रहा है, तो अनुमतियों को फिर से जांचें, विशेष रूप से समूह बिट (ऊपर देखें)।


1
अच्छा जवाब! मैं अपना होमडायर भूल गया: ओ
रोबाऊ

यदि आप ssh (या sshd) का हालिया संस्करण चला रहे हैं, तो सुरक्षा समस्याओं के कारण DSA कुंजियाँ डिफ़ॉल्ट रूप से समर्थित नहीं हैं। एकमात्र वास्तविक सुधार RSA या बेहतर कुंजी में अपग्रेड करना है।
मिकीको रैंटलैनेन

मैंने अपने होम फोल्डर की अनुमति बदल दी है और क्या? मैं एसएसएच से बाहर बंद था! मैंने ssh चाबियाँ बदल दीं, नहीं, सर्वर अभी भी कनेक्शन से इनकार करता है! मैं एक समाधान खोजने की कोशिश में पागल था और आपके घर फ़ोल्डर में 700 ग्राम के जवाब के साथ , ssh ने काम करना शुरू कर दिया !!!!!!! धन्यवाद! यदि मेरा टर्मिनल कनेक्शन समाधान खोजने की कोशिश करते समय गिरा, तो मुझे सर्वर से पूरी तरह से बंद कर दिया जाएगा। तो अपने घर फ़ोल्डर अनुमतियों के साथ नहीं खेलने के लिए सावधान रहें! (मैं सिर्फ अपने घर फ़ोल्डर अनुमतियों को बदल दिया है, नहीं .shsh फ़ोल्डर लेकिन अभी भी SSH से बाहर बंद)
तारिक

9

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

https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Encrypted_Home_Directory


5

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

आप यहां दिए निर्देशों का पालन करके समस्या निवारण के लिए SELinux को अक्षम कर सकते हैं: http://www.centos.org/docs/5/html/5.1/Deployment_Guide/sec-sel-enable-disable-enforce.html , या उसे संपादित करें / आदि / selinux / config फ़ाइल और इसे "लागू करने" से "अक्षम" में बदल दें।

उम्मीद है की यह मदद करेगा।


मैंने सेलिनक्स सक्षम किया था, लेकिन इसे अक्षम करने से यह ठीक नहीं हुआ। मेरे लिए क्या चाल थी chmod 600 ~/.ssh/authorized_keys- फ़ाइल समूह-लेखन योग्य थी। ( pyrosoft.co.uk/blog/2013/01/12/… के माध्यम से )
डेविड

इससे मुझे मदद मिली! धन्यवाद!
907 वां

आपको सही SELinux संदर्भों को सेट करके SELinux के साथ SSH प्रमाणीकरण प्राप्त करने में सक्षम होना चाहिए। सिस्टम-कॉन्फ़िगर किए गए संदर्भों को अपने घर निर्देशिका ( restorecon ~ -R) पर पुनर्स्थापित करना एक अच्छा प्रारंभिक बिंदु है।
जोश केली

4

मैं यह सुनिश्चित करूंगा कि आपकी सेटिंग / etc / ssh / sshd_config सही हो।

केवल पीकेआई के उपयोग को मजबूर करने के लिए और पासवर्डों को अस्वीकार करने के लिए लाइन ढूंढें

#PasswordAuthentication yes 

अपनी फ़ाइल में, इसे अनइंस्टॉल करें और इसे सेट करें

PasswordAuthenticate no

मैं यह सुनिश्चित करने के लिए सेटिंग्स के संतुलन के माध्यम से भी पढ़ूंगा कि वे समझ में आए। विशेष रूप से, यह सुनिश्चित करने का प्रयास करें कि आप आरएसए कुंजी का उपयोग करते हैं क्योंकि डीएसए को समझौता किया जाना है।


11
आप बता रहे हैं कि पासवर्ड ऑथेंटिकेशन को कैसे डिसेबल करना है। यह सार्वजनिक कुंजी प्रमाणीकरण कार्य करने में मदद नहीं करेगा (सार्वजनिक कुंजी को पहले आज़माया गया है)। एंड्रयू: जब तक आप सुनिश्चित नहीं होते कि सार्वजनिक कुंजी प्रमाणीकरण कार्य नहीं है, तब तक पासवर्ड प्रमाणीकरण अक्षम न करें!
गाइल्स का SO- दुष्ट होना बंद हो '

2

समस्या का एक संभावित कारण यह है कि आपके पास डीएसए चाबियाँ हैं लेकिन अब एसएसएच (जाहिरा तौर पर) आरएसए कुंजी की आवश्यकता के लिए चूक है। 16.04 में अपग्रेड करते समय मुझे समस्या हुई। आप यहाँ और अधिक देख सकते हैं लेकिन संक्षिप्त उत्तर निम्नलिखित में जोड़ें ~/.ssh/config:

PubkeyAcceptedKeyTypes ssh-dss


1

दो अलग-अलग मशीनों के बीच संचार समस्या निवारण की आवश्यकता के कारण, मेरे पास ~/.sshक्लाइंट की तरफ दो निजी चाबियां थीं ।

संबंधित निजी कुंजी के साथ प्रत्येक सर्वर होस्ट को कॉन्फ़िगर करने के बजाय ~/.ssh/identityजैसा कि मुझे करना चाहिए था, मेरे पास सभी मेजबानों के लिए माध्यमिक (और इस मामले में गलत) कुंजी कॉन्फ़िगर थी:

Host *
IdentityFile ~/.ssh/identity_b

सही ~/.ssh/identityकरने से समस्या हल हो गई:

Host a
IdentityFile ~/.ssh/identity_a
Host b
IdentityFile ~/.ssh/identity_b

0

मुझे बस एक ही समस्या थी लेकिन अनुमतियों को बदलने में chmodमदद नहीं कर रहा था, क्योंकि यह पता चला कि मेरे पास ~/.ssh/authorized_keysफ़ाइल का स्वामित्व नहीं था । आप इस .sshनिर्देशिका का स्वामित्व बदल सकते हैं :

sudo chown -R "$USER" ~/.ssh

-1

किसी तरह यह मेरे लिए काम किया:

root @ kaiser: ~ # vim / etc / ssh / sshd_config

इस लाइन को हाँ से बदलकर 28 स्ट्रिक्टमोड्स नं

पुनः प्रयास करें

sysadmin @ suselinux1: ~> con sysadmin kaiser Ubuntu 12.04.1 LTS (GNU / Linux 3.2.0-25-जेनेरिक i686) में आपका स्वागत है

अंतिम लॉग इन: शुक्र नवंबर 9 15:40:11 2012 10.1.3.25 से sysadmin @ kaiser: ~ $ दिनांक vie nov 9 17:53:11 सीएसटी 2012 sysadmin @ kaiser: ~ $


3
यह जाने बिना कि यह क्या करता है और क्यों काम करता है, स्वीकार्य हो सकता है, लेकिन यह सुझाव देना बुरा है, और यदि यह सुरक्षा प्रणाली से संबंधित है, तो और भी बुरा है।
महेश

2
माना। इसे बेहतर sshdडॉक्स बनाने के लिए प्रोत्साहन दें , जो वास्तव में "अच्छा शनिवार पढ़ने" की श्रेणी में नहीं आता है
कोड_मनके
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.