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 ?

4voto

np. Points 678

Outre les modes de fichiers/répertoires, assurez-vous que la propriété est correcte ! Un utilisateur doit être propriétaire de son propre répertoire personnel, .ssh/, et des fichiers qu'il contient.

Je devais courir chown -R $user:$user /home/$user pour surmonter mes échecs ssh.

2voto

Il me semble qu'il s'agit d'un problème de configuration. Comme l'a suggéré Daniel, il y a deux choses à vérifier :

  1. Les clés SSH dans $HOME/.ssh/authorized_keys sont lisibles ; et
  2. SSHd est configuré pour autoriser la connexion par clé publique.

2voto

cbeuker Points 685

Vérifiez également qu'il peut fournir automatiquement une clé ou non, utilisez -i path/to/key si ce n'est pas le cas ou juste pour tester.

2voto

Creotiv Points 121

Vérifiez le nom d'utilisateur avec lequel vous essayez de vous connecter. Par défaut, il s'agit de votre nom d'utilisateur sur la machine locale.

1voto

Lumi Points 177

Le résultat du client est le suivant ssh -v révélera qu'il y a un problème à une certaine étape du protocole, mais si le problème est dû à quelque chose sur le serveur, le client ne sera pas informé de la cause. Consultez les fichiers journaux du serveur pour savoir ce qui ne va pas. Il est probable que vous deviez être root afin de disposer des autorisations nécessaires. Par exemple, pour un sshd configuré pour enregistrer les données dans syslog, vous pouvez trouver les messages dans /var/log/secure . Comme ceux-là :

Authentication refused: bad ownership or modes for directory /home/you/.ssh
Authentication refused: bad ownership or modes for file /home/you/.ssh/authorized_keys

Dans ce cas, la raison était un défaut (stupide) default de 0002 . Cela signifie que le groupe dispose d'un accès en écriture. (Le démon SSH ne fait pas confiance aux fichiers qui peuvent être modifiés par d'autres personnes que l'utilisateur (ainsi que root bien sûr). Vous pouvez résoudre le problème en utilisant chmod .

chmod 700 ~/.ssh # solve the issue
chmod 720 ~/.ssh # reproduce the issue
# or similar for a file

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