Ma machine a récemment cessé d'accepter l'authentification de clé publique entrante. J'ai un bureau Ubuntu 11.04 dans lequel je ssh depuis une machine Windows. J'utilise PuTTY avec Pageant. Je peux me connecter, mais uniquement avec une authentification interactive par mot de passe, pas avec ma clé RSA configurée.
J'ai déjà vérifié que la clé est répertoriée dans ~/.ssh/allowed_keys. Comment puis-je résoudre ce problème et que dois-je vérifier?
Si l'authentification par clé publique ne fonctionne pas: assurez-vous que, côté serveur, votre répertoire personnel (~
), le répertoire ~/.ssh
et le fichier ~/.ssh/authorized_keys
sont tous inscriptibles niquement par leur propriétaire. En particulier, aucun d'entre eux ne doit être accessible en écriture par le groupe (même si l'utilisateur est seul dans le groupe). chmod 755
ou chmod 700
est ok, chmod 770
ne l’est pas.
Ce qu'il faut vérifier quand quelque chose ne va pas:
ssh -vvv
pour voir beaucoup de sorties de débogage. Si vous postez une question vous demandant pourquoi vous ne pouvez pas vous connecter avec ssh, incluez cette sortie (vous souhaiterez peut-être anonymiser les noms d’hôte et d’utilisateur)./var/log/auth.log
.J'ai rencontré la même chose et j'ai finalement compris que c'était parce que j'avais chiffré mon répertoire personnel. SSH ne peut pas lire le fichier allowed_keys tant que vous n'êtes pas connecté. Il vous oblige donc à vous authentifier par mot de passe en premier. Voir la section sur le répertoire de base chiffré sur le lien suivant:
https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Encrypted_Home_Directory
Je voudrais vous assurer que vos paramètres dans/etc/ssh/sshd_config sont corrects.
Pour forcer l’utilisation de l’ICP uniquement et interdire les mots de passe, recherchez la ligne
#PasswordAuthentication yes
dans votre fichier, décommentez-le et réglez-le sur
PasswordAuthenticate no
Je voudrais également lire à travers la balance des paramètres pour vous assurer qu'ils ont un sens. En particulier, essayez de vous assurer que vous utilisez des clés RSA, car DSA est connu pour être compromis.
Si vous vérifiez les autorisations sur les répertoires, il y a un "." juste après eux, vous aurez peut-être activé selinux, ce qui gâchera l'échange de clés, et l'identification par défaut du mot de passe.
Vous pouvez désactiver SELinux pour résoudre les problèmes en suivant les instructions suivantes: http://www.centos.org/docs/5/html/5.1/Deployment_Guide/sec-sel-enable-disable-enforcement.html , ou simplement éditez le fichier/etc/selinux/config et remplacez-le par "imposant" par "désactivé".
J'espère que cela t'aides.
Une des causes possibles du problème est que vous avez des clés DSA mais que SSH (apparemment) utilise par défaut les clés RSA. J'ai eu le problème lors de la mise à niveau vers 16.04. Vous pouvez voir plus ici mais la réponse courte est d'ajouter ce qui suit à ~/.ssh/config
:
PubkeyAcceptedKeyTypes ssh-dss
J'ai résolu ce problème en supprimant le commentaire "PasswordAuthentication yes" dans/etc/ssh/sshd_config.
En raison d'un besoin de résolution des problèmes de communication entre deux ordinateurs différents, j'avais deux clés privées dans ~/.ssh
du côté client.
Au lieu de configurer chaque hôte serveur avec la clé privée respective dans ~/.ssh/identity
comme je l'aurais dû, la clé secondaire (et dans ce cas erronée) a été configurée pour tous les hôtes:
Host *
IdentityFile ~/.ssh/identity_b
La correction de ~/.ssh/identity
a résolu le problème:
Host a
IdentityFile ~/.ssh/identity_a
Host b
IdentityFile ~/.ssh/identity_b
J'avais juste le même problème, mais changer les autorisations avec chmod
n'aidait pas, car il s'est avéré que je n'avais pas la propriété du fichier ~/.ssh/authorized_keys
. Vous pouvez changer la propriété du répertoire .ssh
avec:
Sudo chown -R "$USER" ~/.ssh