48 votes

Impossible de faire fonctionner l'authentification par clé publique SSH

Mon serveur fonctionne sous CentOS 5.3. Je suis sur un Mac fonctionnant sous Leopard. Je ne sais pas qui est responsable de ce problème :

Je peux me connecter à mon serveur sans problème via l'authentification par mot de passe. J'ai suivi toutes les étapes de la mise en place de la PKA (telle que décrite à l'adresse http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-ssh-beyondshell.html ), mais lorsque j'utilise SSH, il refuse même d'essayer de vérifier la clé publique. En utilisant la commande

ssh -vvv user@host

(où -vvv augmente la verbosité au maximum), j'obtiens le résultat suivant :

debug2: key: /Users/me/.ssh/id_dsa (0x123456)
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred keyboard-interactive,password
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password

suivi d'une demande de mot de passe. Si j'essaie de forcer le problème avec

ssh -vvv -o PreferredAuthentications=publickey user@host

J'obtiens

debug2: key: /Users/me/.ssh/id_dsa (0x123456)
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred publickey
debug3: authmethod_lookup publickey
debug3: No more authentication methods to try.

Donc, même si le serveur dit qu'il accepte la méthode d'authentification par clé publique et que mon client SSH insiste pour l'utiliser, je suis réfuté. (Notez l'absence flagrante d'une ligne "Offering public key :" ci-dessus.) Des suggestions ?

52voto

pyhimys Points 1237

Vérifiez que votre machine Centos a :

RSAAuthentication yes
PubkeyAuthentication yes

dans sshd_config

et assurez-vous que vous disposez des autorisations nécessaires dans le répertoire ~/.ssh/ de la machine centos.

chmod 700 ~/.ssh/
chmod 600 ~/.ssh/*

devrait faire l'affaire.

18voto

Gareth Points 181

J'ai eu un problème similaire - le PC distant ne pouvait pas utiliser l'authentification par clé publique pour se connecter au serveur CentOs 6. Dans mon cas, le problème était lié à SELinux - le répertoire personnel de l'utilisateur qui essayait de se connecter avait des contextes de sécurité avec des messages. J'ai résolu ce problème en utilisant l'option restorecon de l'outil de travail :

restorecon -Rv /home

17voto

1- vérifiez votre /etc/ssh/sshd_config, assurez-vous d'avoir

RSAAuthentication yes
PubkeyAuthentication yes

2- vérifiez le journal sécurisé de la machine distante, consultez le détail du journal d'erreur du démon sshd. Par exemple, dans mon Ubuntu

\# grep 'sshd' /var/log/secure | grep 'Authentication refused' | tail -5
Aug  4 06:20:22 xxx sshd\[16860\]: Authentication refused: bad ownership or modes for directory /home/xxx
Aug  4 06:20:22 xxx sshd\[16860\]: Authentication refused: bad ownership or modes for directory /home/xxx
Aug  4 06:21:21 xxx sshd\[17028\]: Authentication refused: bad ownership or modes for directory /home/xxx
Aug  4 06:21:21 xxx sshd\[17028\]: Authentication refused: bad ownership or modes for directory /home/xxx
Aug  4 06:27:39 xxx sshd\[20362\]: Authentication refused: bad ownership or modes for directory /home/xxx

Ensuite, vérifiez la propriété et les modes du répertoire /home/xxx, peut-être devez-vous exécuter ceci

chmod 755 /home/xxx

11voto

Diego Points 1311

Vérifiez que les autorisations sont correctes et que la structure des fichiers (en particulier l'orthographe) est correcte, tant pour les machines locales que pour les machines distantes. L'URL à laquelle vous faites référence les mentionne toutes, mais il vaut la peine de vérifier que ce que vous avez correspond. Normalement, les permissions génèrent une erreur pertinente.

Avez-vous vérifié que la configuration sshd_config de votre machine CentOS 5.3 autorise PubkeyAuthentication ou RSAAuthentication ?

Vérifiez les journaux du serveur SSH sur le système CentOS - ils peuvent fournir plus d'informations. Je ne suis pas sûr que CentOS vérifie les clés ssh sur liste noire comme le fait debian, mais j'ai vu des rejets de clés publiques ssh qui étaient relativement silencieux en ce qui concerne la sortie -vvvv, mais les journaux expliquaient assez clairement ce qui se passait.

9voto

Je l'ai ! Il s'avère que c'était un problème côté client. (Je pense qu'un problème côté serveur aurait produit des résultats de débogage plus utiles). Pour des raisons qui me sont inconnues, sur mon Mac, le fichier /etc/ssh_config contenait la ligne suivante

PubkeyAuthentication = no

J'ai commenté cette ligne, et maintenant tout fonctionne bien.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X