SSH कुंजी आधारित प्रमाणीकरण स्थापित करने के बाद भी पासवर्ड मांगता है


10

मैंने अपने A मशीन से अपने B मशीन के लिए रूट उपयोक्ता के लिए मुख्य रूप से एक मुख्य आधार बनाया है।

अब, मैंने B मशीन पर एक नया उपयोगकर्ता बनाया, A मशीन पर भी, चलो उसे कॉल करते हैं USER। मैंने बी मशीन पर उसके लिए एक होम डायर बनाया /home/USERऔर मैं मशीन ए से बी मशीन के लिए उसके लिए कुंजी आधारित आधार बनाना चाहता हूं।

तो, मैं एक मशीन पर भागा

  1. ssh-keygen -t rsa, सभी रास्ते स्वीकार किए जाते हैं, इसलिए /home/USER/.ssh/id_rsaऔर कोई वाक्यांश नहीं
  2. ssh-copy-id -i /home/USER/.ssh/id_rsa.pub USER@BmachinesIP, पासवर्ड डाला और मालिश करवा ली

अब मशीन bla bla bla में लॉग इन करने का प्रयास करें

तो सब ठीक लगता है।

लेकिन जब मैंने कनेक्ट करने की कोशिश की तो मुझसे ssh USER@BmachinesIPपासवर्ड मांगा गया। मैंने लॉग देखने की कोशिश की और भाग गया ssh -vvv USER@BmachinesIPऔर यहाँ आउटपुट का एक हिस्सा है:

debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /home/USER/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/USER/.ssh/id_dsa
debug3: no such identity: /home/USER/.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
USER@BmachinesIP's password:

तो, क्या कोई मुझे बता सकता है कि मैंने क्या गलत किया है या मुझे क्या बदलना चाहिए? हो सकता है कि समस्या अनुमतियों में है, यहाँ वे हैं:

एक मशीन पर:

drwx------  2 USER USER    SIZE DATE TIME .ssh
-rw-------  1 USER USER 1675 2011-10-31 14:36 id_rsa
-rw-r--r--  1 USER USER 413 2011-10-31 14:36 id_rsa.pub

और बी मशीन पर:

drwx------  2 USER defaultGroup    SIZE DATE TIME .ssh
-rw-------    1 USER defaultGroup    SIZE DATE TIME authorized_keys

जवाबों:


13

मैंने एक उपाय खोज लिया है। अनुमतियों में एक समस्या थी।

/home/USER रिमोट मशीन पर सभी अनुमतियाँ दी गई थीं, लेकिन प्रमुख आधारित स्थिति के लिए इसे 755 पर सेट किया जाना चाहिए


2
वाह। आश्चर्यजनक है कि अनुमतियों के बारे में शून्य डिबग आउटपुट है, भले ही वे उचित सार्वजनिक कुंजी कॉन्फ़िगरेशन के लिए केंद्रीय हों।
jchook

वाह, आप सही हैं। अब यह काम कर रहा है .... हालांकि मैं वास्तव में इसकी अनुमति मूल रूप से (775) रखना चाहता हूं। कैसे बदलना है इसके बारे में कोई सुराग?
पाब्लो ओल्मोस डी एगुइलेरा सी।

ऐसा लगता है कि कोई रास्ता नहीं है, केवल sshd_config में स्ट्रिक्टमोड्स नॉट वर्कअराउंड सेट किया जाएगा। : /।
पाब्लो ओलमोस डे एगुइलेरा सी।

2
अनिवार्य रूप से आपको इन अनुमतियों की आवश्यकता है: chmod o-w ~/; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keysतो यह काम करता है। यहाँ से मैक्सिम आर के उत्तर से कॉपी किया गया: askubuntu.com/questions/54670/passwordless-ssh-not-working
erik

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

2

मेरे लिए एक ही समस्या ताजा CentOS7 स्थापित।

1. घर dir अनुमतियाँ और ~ / .sh और ~ / .ssh / अधिकृत_की अनुमति की जाँच करें (@erik के अनुसार)

chmod o-w ~/; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys

2. check / etc / ssh / sshd_config सेटिंग && सेवा sshd पुनरारंभ (प्रत्येक संपादन के बाद) उपयोगी: sshd_config में "LogLevel VERBOSE" आज़माएं।

मुझे अभी भी ठीक है कि सभी की जाँच के बाद पासवर्ड संकेत मिल गया था।

-Vvv लॉग के साथ ssh क्लाइंट चलाएं:

debug3: send_pubkey_test 
debug2: we sent a publickey packet, wait for reply

सर्वर (/ var / लॉग / सुरक्षित) लॉग:

Failed publickey for * from * port * ssh2: RSA *

ssh सर्वर क्लाइंट के लिए अधिक त्रुटि जानकारी नहीं भेजता है क्योंकि यह एक सुरक्षा जोखिम होगा।

अगर मैं अलग-अलग पोर्ट 'sshd -p 5555 -d' पर sshd चलाता हूं। कुंजी ने काम किया। पासवर्ड रहित लॉगिन ठीक है। WTF?

तब मैंने selinux (सेट SELINUX = in / etc / selinux / config) अक्षम किया और रिबूट किया। पासवर्ड रहित लॉगिन तो ठीक काम किया।

मेरी वर्तमान कार्यशील sshd_config सेटिंग:

[root@hp-bl-05 ~]# grep -vE "^#|^$" /etc/ssh/sshd_config  
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
SyslogFacility AUTHPRIV
LogLevel VERBOSE
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys
HostbasedAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication no
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding yes
UseDNS no
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
Subsystem   sftp    /usr/libexec/openssh/sftp-server

इसलिए यह जानना अच्छा होगा कि हम काम करने के लिए पासवर्ड रहित ssh लॉगिन प्राप्त करने के लिए सेलिनक्स में कुछ छोटा परिवर्तन कर सकते हैं। क्या कोई उत्तर में सुधार कर सकता है?


0

समाधान SELinux को अक्षम नहीं कर रहा है, लेकिन उपयोगकर्ता निर्देशिका के SELinux अनुमतियों को ठीक करने के लिए। उपयोगकर्ता निर्देशिका संदर्भ को सेट किया जाना चाहिए user_home_t

जाँच करने के लिए,

$ sudo ls -Z /home/

यदि आपकी उपयोगकर्ता निर्देशिका के लिए संदर्भ से कुछ भी है user_home_t, तो SELinux उस उपयोगकर्ता के लिए उस उपयोगकर्ता निर्देशिका में सार्वजनिक कुंजी के माध्यम से SSH की अनुमति नहीं देगा।

तै होना,

$ sudo semanage fcontext -a -t user_home_t /home/azureuser
$ sudo restorecon -vvRF /home/azureuser

कुंजी आधारित लॉगिन अब काम करना चाहिए।

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