ssh-copy-id काम नहीं करता है


19

मैं CentOS 5.4 पर एक पासवर्ड रहित SSH लॉगिन स्थापित करने की कोशिश कर रहा हूँ:

  1. मैंने क्लाइंट पर RSA सार्वजनिक कुंजी उत्पन्न की।
  2. ssh-copy-id क्लाइंट से सर्वर तक।
  3. सत्यापित ~ /। Ssh / अधिकृत_की में क्लाइंट कुंजी है।

क्लाइंट ने अभी भी पासवर्ड के लिए संकेत दिया है। मुझसे क्या छूट गया?

धन्यवाद।

संपादित करें: सलाह के अनुसार ssh_config और अनुमतियों की जाँच की। यह ग्राहक से डीबग जानकारी है:

debug2: key: /home/saguna/.ssh/identity ((nil))
debug2: key: /home/saguna/.ssh/id_rsa (0x2b31921be9a0)
debug2: key: /home/saguna/.ssh/id_dsa ((nil))
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup gssapi-with-mic
debug3: remaining preferred: publickey,keyboard-interactive,password
debug3: authmethod_is_enabled gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic
debug3: Trying to reverse map address 192.168.1.75.
debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug2: we did not send a packet, disable method
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/saguna/.ssh/identity
debug3: no such identity: /home/saguna/.ssh/identity
debug1: Offering public key: /home/saguna/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug1: Trying private key: /home/saguna/.ssh/id_dsa
debug3: no such identity: /home/saguna/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
saguna@192.168.1.75's password: 

मुझे यह भी मिलता है :(
मैट जॉइनर

जवाबों:


19

9/10 बार ऐसा इसलिए है क्योंकि ~ / .Ssh / अधिकृत_कीज़ सही मोड पर नहीं है।

chmod 600 ~/.ssh/authorized_keys

2
FYI करें, मैंने github.com/centic9/generate-and-send-ssh-key पर एक छोटी सी स्क्रिप्ट बनाई जो एक ही बार में आवश्यक कदम उठाती है और इसके साथ ही सभी फ़ाइल / निर्देशिका अनुमतियों को सुनिश्चित करती है जिससे मुझे हमेशा सिरदर्द होता है ...
centic

5
यदि यह किसी के लिए काम नहीं करता है, तो आपको @ गाइल्स के जवाब को भी देखना चाहिए। विशेष रूप से, घर और~/.ssh निर्देशिका उपयोगकर्ता के अलावा किसी और के द्वारा नहीं लिखा जा सकता है।
ओस्ट्रोकैच

मुझे पता है कि यह पुराना है, लेकिन @ मिलियन को एक लाख धन्यवाद। मुझे यकीन था कि मेरी अनुमति सही थी लेकिन कभी भी $ HOME और .sh / निर्देशिकाओं पर जाँच करने की जहमत नहीं उठाई गई।
jdferreira

मेरे लिए काम किया। धन्यवाद!
इवान कोवटन

12

कुंजी के साथ प्रमाणीकरण की अनुमति देने के लिए / etc / ssh / sshd_config में जांचें। आपको इसमें कुछ इस तरह का होना चाहिए, और सुनिश्चित करें कि लाइनों पर टिप्पणी नहीं की गई है:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys

पुनश्च: आप फ़ाइल को संशोधित करने के बाद sshd को पुनः आरंभ करना न भूलें (/etc/init.d/sshd पुनरारंभ)


Patkos Csaba के जवाब के अलावा, अपने स्थानीय और दूरस्थ ~ / .shsh फ़ोल्डर की अनुमतियों की जाँच करें।

मेरे मामले में, AuthorizedKeysFileटिप्पणी की गई और मुझे भी एक निरपेक्ष मार्ग का उपयोग करना पड़ा authorized_keys
एंड्रयू

मुझे 'आपके प्रमाणीकरण एजेंट के लिए कनेक्शन नहीं खोला जा सका।' जब ssh-add की कोशिश कर रहा है
Manticore

यह चयनित उत्तर होना चाहिए
फ्रांसिस्को तापिया

हो सकता है कि आप टिप्पणियों को न समझें। टिप्पणी की गई लाइनें आपको डिफ़ॉल्ट मान दिखाती हैं। यदि आप डिफ़ॉल्ट मान चाहते हैं, तो आपको उन्हें असहज करने की आवश्यकता नहीं है। यदि आप डिफ़ॉल्ट मान को ओवरराइड करना चाहते हैं, तो आपको केवल संपत्ति को अनइंस्टॉल करना होगा।
स्पष्ट करें

5

मैंने पाया कि मेरी प्रणाली के साथ समस्या उपयोगकर्ता निर्देशिका (/ होम / उपयोगकर्ता नाम) थी जो गलत अनुमतियों के सेट से सुसज्जित थी। यह drwxr-x-w-होना चाहिए था drwxr-xr-x(केवल मालिक के लिए लिखित अनुमति के साथ) होना चाहिए। समाधान का उपयोग करने के लिए chmod था:

sudo chmod 0755 /home/username

1
हाँ! मेरे लिए काम किया। ssh मुझे एक पासवर्ड प्रॉम्प्ट दे रहा था क्योंकि मैंने फ़र्म्स को बॉट किया।
स्पष्ट करें

4

मैं यहाँ एक विशेषज्ञ नहीं हूँ, लेकिन इस तरह के मुद्दे पर भी आया हूँ, यहाँ अन्य सभी सुझावों के अलावा मेरे दो सेंट हैं।

कभी-कभी ssh-copy-idगलत कुंजी को दूरस्थ सर्वर पर कॉपी करता है (ऐसा हो सकता है यदि आपके पास कई कुंजियाँ हैं और / या कुंजी फ़ाइलों के लिए गैर-डिफ़ॉल्ट नामों का उपयोग कर रहे हैं) या आपका प्रमाणीकरण एजेंट गलत है।

यहाँ आदमी पृष्ठों से एक उद्धरण है :

यदि -i विकल्प दिया जाता है तो पहचान फ़ाइल (~ / .ssh / id_rsa.pub के लिए डिफॉल्ट) का उपयोग किया जाता है, भले ही आपके ssh- एजेंट में कोई कुंजी हो या नहीं। अन्यथा, यदि यह: ssh-add -L कोई आउटपुट प्रदान करता है, तो यह पहचान फ़ाइल के लिए प्राथमिकता में उपयोग करता है।

तो मूल रूप से आप यह देखना चाहते हैं कि:

  • आपका सिस्टम प्रमाणीकरण एजेंट (आमतौर पर ssh- एजेंट) उन कुंजियों को देखता है जिन्हें आप उपयोग करना चाहते हैं ( ssh-add -Lआउटपुट की जांच करें )
    • यदि आपको वांछित कुंजी दिखाई नहीं देती है, तो इसे ssh-add का उपयोग करके जोड़ें
  • ssh-copy-idरिमोट मशीन के लिए एक ही कुंजी कॉपी की गई (बस पासवर्ड का उपयोग करके रिमोट सर्वर में लॉग इन करें और सामग्री की जांच करें ~/.ssh/authorized_keys)
    • यदि आपको दूरस्थ सर्वर पर वांछित कुंजी दिखाई नहीं देती है, तो आप स्पष्ट रूप से बता सकते हैं कि ssh-copy-idकिस कुंजी को कॉपी करना है:ssh-copy-id -i ~/.ssh/some_public_key

उम्मीद है की वो मदद करदे।


1
आप इसे किसी न किसी! मेरी ssh-copy-id समस्या के माध्यम से खुदाई करना है: DEFAULT_PUB_ID_FILE=$(ls -t ${HOME}/.ssh/id*.pub 2>/dev/null | grep -v -- '-cert.pub$' | head -n 1)जो कि वर्णमाला की पहली कुंजी के लिए डिफ़ॉल्ट होगा - मेरे मामले में मेरे पास एक था id_boot2docker.pub(जो कि स्पष्ट रूप से बूट 2 डॉक के ssh सामान के लिए डिफ़ॉल्ट नाम है)। ऐसा लगता है कि चारों ओर विभिन्न ssh-copy-id कार्यान्वयन का एक समूह है; खदान से आया brew install ssh-copy-id, जो बदले में ओपनश-पोर्टेबल से लिया गया है। मेरे मैन पेज में इस व्यवहार का स्पष्ट उल्लेख है ...
ईसाई उलब्रिच

3

सबसे आम समस्या सर्वर साइड पर अमान्य अनुमतियां हैं। जांचें कि आपके घर की कोई भी निर्देशिका, ~/.sshऔर ~/.ssh/authorized_keysकिसी के द्वारा भी लिखने योग्य नहीं है, लेकिन आप (विशेष रूप से उन्हें समूह-लेखन योग्य नहीं होना चाहिए)।

यदि यह समस्या नहीं है, ssh -vvv serverतो वार्तालाप के क्लाइंट के दृष्टिकोण को देखें और चलाएँ । विशेष रूप से, जांचें कि क्लाइंट सर्वर के साथ कुंजी का प्रयास कर रहा है।


धन्यवाद!!! मैं क्यों समझ में नहीं है, लेकिन अपने घर निर्देशिका , ~/.sshऔर ~/.ssh/authorized_keysकिसी को भी, लेकिन आप से लिखने योग्य नही हो सकता है।
3

2

उपरोक्त सभी के अलावा, व्यक्ति हमेशा sshd लॉग फ़ाइल की जांच कर सकता है:

/var/log/auth.log

1

मैंने अन्य सुधारों की कोशिश की, लेकिन पाया कि मुझे घर की निर्देशिका को बदलना होगा ताकि दूसरों के द्वारा न लिखा जा सके। होम डायरेक्टरी 777 थी। मैंने इसे 755 में बदल दिया और इसने काम किया।


1
@dulcana में आपका स्वागत है, वह एक पासवार्डलेस ssh लॉगिन सेट करने की कोशिश करता है, 755 में बदलाव करने से समस्या को हल करने में कैसे मदद मिल सकती है?
फ्रांसिस्को तापिया

@FranciscoTapia इसलिए कि sshd यह सुनिश्चित करता है कि अन्य उपयोगकर्ता दुर्भावनापूर्ण रूप से अधिकृत_की फ़ाइल नहीं बना सकते हैं, ssh कुंजी द्वारा लॉगिन से इंकार करते हुए जहां समूह या अन्य फ़ाइल या उनके माता-पिता में से कोई भी लिख सकता है। अन्य उत्तरों ने भी इसका उल्लेख किया है।
.ngel

0

मेरे मामले में / आदि / ssh / sshd_config में निम्नलिखित परम शामिल थे:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys2

लेकिन ssh-copy-id ने एक नाम अधिकृत_की के साथ फाइल बनाई, इसलिए मुझे नए नाम में प्रविष्टि को संशोधित करना पड़ा। पदावनत अधिकृत_के बारे में अधिक जानकारी_ २


0

नए CentOS 7 के लिए Omer Dagan उत्तर के पूरक के रूप में, उपयोग करें:

journalctl -f -u sshd

सर्वर पर sshd लॉग को देखने के लिए।


-1

समस्या यह थी कि मुझे RSAAuthentication / disshled / ssh / ssh_config में था

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