ssh, ssh-copy-id के बावजूद पासवर्ड के लिए संकेत देता है


28

मैं कुछ समय के लिए एक दूरस्थ सर्वर पर सार्वजनिक कुंजी प्रमाणीकरण का उपयोग कर रहा हूं, अब दूरस्थ शेल उपयोग के लिए और sshfs माउंट के लिए भी। मेरे sshfs निर्देशिका के एक umount को मजबूर करने के बाद, मैंने देखा कि ssh ने मुझे पासवर्ड के लिए संकेत देना शुरू किया। मैंने किसी स्थानीय मशीन का उल्लेख करते हुए रिमोट .sh / अधिकृत_कीप को शुद्ध करने की कोशिश की, और मैंने रिमोट मशीन के संदर्भ में स्थानीय मशीन को साफ किया। मैंने फिर अपनी ssh-copy-id दोहराई, इसने मुझे पासवर्ड के लिए प्रेरित किया, और सामान्य रूप से वापस लौटा। लेकिन लो और निहारना, जब मैं दूरस्थ सर्वर पर ssh करता हूं तो मुझे अभी भी पासवर्ड के लिए संकेत दिया जाता है। मैं थोड़ा उलझन में हूं कि यह मुद्दा क्या हो सकता है, कोई सुझाव?


1
serverfault.com/questions/208181/... मुझे यकीन है कि नहीं कर रहा हूँ क्या साइटों में डुप्लिकेट पर StackExchange नीति है, लेकिन यह मुझे नहीं लगता है कि पार पोस्टिंग एक सवाल उपयोगी होगा।
काल

यदि आपने जाँच की है कि केवल आप ही लिख सकते हैं ~, ~/.sshऔर ~/.ssh/authorized_keys, ssh -vvv server.example.comआउटपुट को चला सकते हैं और रिपोर्ट कर सकते हैं (यदि आप चाहें तो होस्ट और उपयोगकर्ता नामों को अज्ञात करें)। यदि आपके पास सर्वर पर रूट एक्सेस है, तो सार्वजनिक कुंजी लॉगिन का प्रयास करते समय बनाई गई लॉग प्रविष्टियों को देखें।
गिल्स एसओ-

जवाबों:


32

sshd को $ HOME, $ HOME / .sh (दोनों डायरेक्टरीज़) और $ HOME / .ssh / अधिकृत_keys पर अनुमतियों के बारे में अजीब लगता है।

मेरा एक लिनक्स बॉक्स मेरी $ HOME निर्देशिका पर drwxrwxrwx अनुमतियों के साथ समाप्त हो गया। एक आर्क लाइन बॉक्स बिल्कुल सार्वजनिक कुंजी का उपयोग करने में प्रवेश नहीं करेगा, जब तक कि मैं समूह के लिए 'डब्ल्यू' अनुमति को नहीं हटा देता, अन्य मेरी $ होम निर्देशिका पर।

$ HOME और $ HOME / .shsh बनाने की कोशिश करें और समूह और अन्य के लिए अधिक प्रतिबंधात्मक अनुमति दें। देखें कि sshd अपने सामान को करने नहीं देता है।


4
हाँ। ssh-copy-idकी अनुमति का ध्यान रखा जाना चाहिए था ~/.sshऔर ~/.ssh/authorized_keys, लेकिन यह भी सुनिश्चित करें कि आपके घर निर्देशिका में ही समूह-लिखने योग्य नहीं है बनाते हैं।
गिल्स एसओ- बुराई को रोकना 'डिक

7
यह वह था, मेरे लिए। मैंने RSA कुंजी भेजने के लिए ssh-copy-id का उपयोग किया, और मुझे अभी भी संकेत मिल रहा था। chmod g-w homedirरिमोट सर्वर पर चलना एक आकर्षण की तरह काम करता था।
बेन क्रीगर

9

निम्नलिखित अनुमतियों की आवश्यकता है:

  • .sshफ़ोल्डर:700 (drwx------)
  • सार्वजनिक कुंजी: 644 (-rw-r--r--)
  • निजी कुंजी: 600 (-rw-------)

5

मैंने हाल ही में इस मुद्दे को भी अनुभव किया है।

यह $HOMEनिर्देशिका की अनुमतियों को संशोधित करके सही किया गया था । हालाँकि, बस चलाने chmod g-w ~/से समस्या ठीक नहीं हुई। इसके अलावा करने के लिए chmod g-w ~/मैं भी की अनुमतियों को संशोधित करने की जरूरत othersपर $HOMEचलाकर निर्देशिकाchmod o-wx ~/

साथ में:

chmod g-w ~/
chmod o-wx ~/

ध्यान दें कि मुझे यकीन नहीं है कि यदि o-xआवश्यक था, तो मैंने इसे सावधानी के रूप में चलाया।



0

क्या समस्या समांतर लॉगिन पर भी होती है, अर्थात यदि आप खुले ssh सत्र के दौरान sshfs को माउंट करने का प्रयास करते हैं? यदि नहीं, तो मुझे लगता है कि आप अपने घर निर्देशिका एन्क्रिप्टेड है? इस मामले में $HOME/.ssh/authorized_keysकेवल आपके पहले लॉगिन (आपके पासवर्ड का उपयोग करके) के बाद रिमोट मशीन पर उपयोग करने योग्य हो जाएगा।

की जाँच करें https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Troubleshooting एक विवरण और आवश्यक वैकल्पिक हल के लिए।


0

मैं इसे एक टिप्पणी के रूप में पोस्ट करूंगा, लेकिन यह शायद बहुत लंबा होगा। मैं बस यह जोड़ना चाहता था कि आपके फ़ोल्डर के अंदर लोकेशन ssh-copy-idसे पब्लिक की भेजने की कोशिश करता है ।/.ssh$HOME

यदि आप sshसार्वजनिक कुंजी के साथ रूट करने की कोशिश कर रहे हैं (सुरक्षा-संबंधित टिप्पणियों को सहेजें), ssh-copy-idतो गलत सार्वजनिक कुंजी के साथ लॉगिन करने की कोशिश की जा सकती है यदि आपका $HOMEचर इसके अलावा किसी अन्य चीज़ पर सेट है /root(जैसे कि आपके सामान्य उपयोगकर्ता के घर निर्देशिका में सेट किया जा रहा है) ), इस प्रकार रूट उपयोगकर्ता को संकेत मिल रहा होगा क्योंकि रिमोट सिस्टम पर रूट की सार्वजनिक कुंजी स्थापित नहीं है।

आप सटीक सार्वजनिक कुंजी निर्दिष्ट करने के लिए निम्नलिखित एक-लाइनर का उपयोग कर सकते हैं:

pub="$(cat /root/.ssh/id_rsa.pub)"; ssh user@remotehost "echo $pub >> .ssh/authorized_keys; chmod 700 .ssh; chmod 600 .ssh/authorized_keys"

मैंने इस परिदृश्य को कुछ समय (इस सुबह सहित) में सामना किया है और मुझे लगा कि मैं अपने 2 सेंट में डालने की कोशिश करूंगा, अगर किसी ने खुद को उसी स्थिति में पाया।


0

उल्लेखित अन्य योगदानकर्ताओं की तरह, यह संभवतः एक अनुमति मुद्दा है।

इसका सबसे अच्छा तरीका यह है कि दूरस्थ सर्वर पर SSH डेमॉन को डिबग विकल्प के साथ - आमतौर पर "-d" विकल्प को फिर से शुरू करना है। OpenSSH डेमन संदेश बहुत स्पष्ट हैं। उदाहरण के लिए, आप इस तरह के संदेश देखेंगे:

Authentication refused: bad ownership or modes for directory /some/path

मैं उस संदेश को "बहुत स्पष्ट" नहीं कहूंगा। यह आपको बहुत अस्पष्ट रूप से बताता है कि आपको क्या करना चाहिए (गलत स्वामित्व और अनुमतियां)
उरुखीदपुर

0

सार्वजनिक कुंजी पोस्ट रिबूट नहीं होने का कारण यह था कि मेरे सर्वर होम डायरेक्टरी को एन्क्रिप्ट किया गया था। (आप सर्वर स्थापित करते समय ऐसा करते हैं)


0

एक अन्य संभावित समस्या यह है कि सर्वर आपके प्रमुख एल्गोरिथ्म का समर्थन नहीं करता है। मेरे मामले में, मुझे अपने sshdलॉग में ( /var/log/auth.logमेरे मामले में) निम्नलिखित संदेश मिले :

userauth_pubkey: unsupported public key algorithm: ssh-ed25519 [preauth]

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


0

जैसा कि यह प्रश्न इस व्यवहार के लिए जाने पर पहले खोज परिणामों के बीच प्रकट होता है, मैं अपना समाधान भी जोड़ूंगा:

मेरे मामले में यह अनुमति से संबंधित कुछ भी नहीं था। किसी भी कारण से (खुद को परेशान करने की जरूरत नहीं है कि किस कारण से वास्तव में, जैसा कि मैंने एक त्वरित ठीक पाया) ssh कमांड निष्पादित करते समय कार्यक्रम सही पहचान फ़ाइल के लिए नहीं देखा। एक समाधान मैन्युअल रूप से रिमोट सर्वर पर एक एसएसएच कुंजी जोड़ना था जिसे एसएसएच प्रोग्राम ने उपयोग करने की कोशिश की। आप कमांड में -v जोड़कर कमांड को निष्पादित करते समय एसएसएच कार्यक्रम क्या कर सकते हैं:

ssh -v username@your-host-ip-or-domain 

फिर आप बस अपनी स्थानीय मशीन को किसी भी सार्वजनिक कुंजी पर हड़प लेते हैं जिसके लिए SSH प्रोग्राम मैक के लिए एक पहचान फ़ाइल / निजी कुंजी खोजने की कोशिश करता है, उदाहरण के लिए:

cat ~/.ssh/id_rsa.pub

... और इसे दूरस्थ के अधिकृत_की फ़ाइल में जोड़ें:

~/.ssh/authorized_keys

एक और, मेरे मामले में बेहतर समाधान था कि मैं अपने स्थानीय ssh config फाइल में एक कस्टम होस्ट जोड़ें। मेरे मैक पर यह है:

/Users/my-user-name/.ssh/config

यहाँ आप उदाहरण के लिए कुछ इस तरह से जोड़ सकते हैं:

Host mynewserver
        HostName some.IP.number.or.domain
        Port 20000 #if custom port is used and not the default 22
        User the_root
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/id_rsa_for_my_new_server

फिर आपको बस निष्पादित करने की आवश्यकता है:

ssh mynewserver

... और Voilà

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