ssh n'autorise plus l'authentification par clé publique

22

Mon ordinateur a récemment cessé d'accepter l'authentification par clé publique entrante. J'ai un bureau ubuntu 11.04 dans lequel je ssh depuis une machine Windows. J'utilise du mastic avec du reconstitution historique. Je peux me connecter mais uniquement avec l'authentification par mot de passe interactif, pas avec ma clé rsa que j'ai configurée.

J'ai déjà vérifié que la clé est répertoriée dans ~ / .ssh / authorized_keys. Comment puis-je résoudre ce problème et que dois-je vérifier?

Andrew Redd
la source
2
Vérifiez d' abord que tous les trois ~, ~/.sshet ~/.ssh/authorized_keyssont modifiables uniquement par vous (sans autorisation particulière d'écriture de groupe). Recherchez /var/log/auth.logles entrées de journal créées lors de vos tentatives de connexion. Copiez-collez-les dans votre question (éditez les noms pour plus de confidentialité si vous le souhaitez). Vérifiez également si le problème est purement côté serveur ou non: copiez la clé privée sur la machine Linux (vous devrez convertir le fichier de clé privée de PuTTY au format OpenSSH) et voir si cela ssh localhostfonctionne.
Gilles 'SO- arrête d'être méchant'
mon répertoire personnel était accessible en écriture pour une raison quelconque. Cela l'a corrigé. Mettez-le comme réponse pour que je puisse l'accepter.
Andrew Redd
stackoverflow.com/questions/6377009/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Réponses:

28

Si l'authentification par clé publique ne fonctionne pas: assurez-vous que côté serveur, votre répertoire personnel ( ~), le ~/.sshrépertoire et le ~/.ssh/authorized_keysfichier ne sont accessibles en écriture que 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 755ou chmod 700est ok, chmod 770n'est pas.

Que vérifier en cas de problème:

  • Exécutez ssh -vvvpour voir beaucoup de sortie de débogage. Si vous postez une question demandant pourquoi vous ne pouvez pas vous connecter avec ssh, incluez cette sortie (vous pouvez anonymiser les noms d'hôte et d'utilisateur).
  • Si vous le pouvez, vérifiez les connexions au serveur /var/log/auth.log.
  • Si l'authentification par clé publique ne fonctionne pas, vérifiez à nouveau les autorisations, en particulier le bit de groupe (voir ci-dessus).
Gilles 'SO- arrête d'être méchant'
la source
(du wiki de balises U&L , copié dans AU )
Gilles 'SO- arrête d'être méchant'
1
Bonne réponse! J'ai oublié mon homedir: o
RobAu
Si vous utilisez une version récente de ssh (ou sshd), les clés DSA ne sont plus prises en charge par défaut en raison de problèmes de sécurité. Le seul vrai correctif est de mettre à niveau vers RSA ou de meilleures clés.
Mikko Rantalainen
J'ai changé les autorisations de mon dossier personnel et quoi? J'ai été exclu de SSH! J'ai changé les clés ssh, non, le serveur refuse toujours la connexion! J'étais fou en essayant de trouver une solution et avec votre réponse de chmod 700 à mon dossier personnel, ssh a commencé à travailler !!!!!!! Merci! Si ma connexion au terminal tombait en essayant de trouver la solution, je serais totalement verrouillé hors du serveur. Attention donc à ne pas jouer avec les permissions de votre dossier home! (Je viens de changer les autorisations de mon dossier personnel, pas le dossier .ssh mais toujours verrouillé hors de SSH)
Tarik
9

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 authorized_keys tant que vous ne vous êtes pas connecté, il vous oblige donc à vous authentifier par mot de passe en premier. Voir la section sur le répertoire personnel chiffré sur le lien suivant:

https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Encrypted_Home_Directory

Willie Wheeler
la source
5

Si vous vérifiez les autorisations sur les répertoires et qu'il y a un "." juste après eux, alors vous pouvez avoir selinux activé, qui gâchera avec l'échange de clés et par défaut pour l'identification manuelle du mot de passe.

Vous pouvez désactiver SELinux pour dépanner en suivant les instructions ici: http://www.centos.org/docs/5/html/5.1/Deployment_Guide/sec-sel-enable-disable-enforcement.html , ou modifiez simplement le / etc / selinux / config et remplacez-le par "forcer" par "désactivé".

J'espère que cela t'aides.

tweekd
la source
J'avais activé selinux, mais le désactiver ne semblait pas le réparer. Pour moi, le truc, c'est que chmod 600 ~/.ssh/authorized_keysle fichier était inscriptible en groupe. (via pyrosoft.co.uk/blog/2013/01/12/… )
David Carboni
Cela m'a aidé! Merci!
907th
Vous devriez également pouvoir obtenir l'authentification SSH avec SELinux en définissant les contextes SELinux corrects. La restauration des contextes configurés par le système sur votre répertoire personnel ( restorecon ~ -R) est un bon point de départ.
Josh Kelley
4

Je m'assurerais que vos paramètres dans / etc / ssh / sshd_config sont corrects.

Pour forcer l'utilisation de PKI uniquement et pour interdire les mots de passe, trouvez la ligne

#PasswordAuthentication yes 

dans votre fichier, décommentez-le et définissez-le sur

PasswordAuthenticate no

Je voudrais également lire la balance des paramètres pour m'assurer qu'ils ont du sens. En particulier, essayez de vous assurer que vous utilisez des clés RSA car DSA est connu pour être compromis.

cmdematos
la source
11
Vous expliquez comment désactiver l'authentification par mot de passe. Cela n'aidera pas à faire fonctionner l'authentification par clé publique (la clé publique est essayée en premier). Andrew: ne désactivez pas l'authentification par mot de passe tant que vous n'êtes pas sûr que l'authentification par clé publique fonctionne!
Gilles 'SO- arrête d'être méchant'
2

Une des causes possibles du problème est que vous avez des clés DSA mais maintenant SSH (apparemment) par défaut requiert des clés RSA. J'ai eu le problème lors de la mise à niveau vers 16.04. Vous pouvez en voir plus ici, mais la réponse courte est d'ajouter ce qui suit à ~/.ssh/config:

PubkeyAcceptedKeyTypes ssh-dss
DeegC
la source
1

J'ai résolu ce problème en décommentant "PasswordAuthentication yes" dans / etc / ssh / sshd_config.

Ben Ernest
la source
1

En raison d'un besoin de dépannage de la communication entre deux machines différentes, j'avais deux clés privées ~/.sshcôté client.

Au lieu de configurer chaque hôte de serveur avec la clé privée respective ~/.ssh/identitycomme je l'aurais dû, j'ai eu la clé secondaire (et dans ce cas, incorrecte) configurée pour tous les hôtes:

Host *
IdentityFile ~/.ssh/identity_b

La correction a ~/.ssh/identityrésolu le problème:

Host a
IdentityFile ~/.ssh/identity_a
Host b
IdentityFile ~/.ssh/identity_b
Uli Klumpp
la source
0

J'ai juste eu le même problème, mais changer les autorisations avec chmodn'a pas aidé, car il s'est avéré que je ne possédais pas le ~/.ssh/authorized_keysfichier. Vous pouvez changer la propriété du .sshrépertoire avec:

sudo chown -R "$USER" ~/.ssh
Entaille
la source
-1

D'une certaine manière, cela a fonctionné pour moi:

root @ kaiser: ~ # vim / etc / ssh / sshd_config

Changer cette ligne de oui à non 28 StrictModes non

Réessayer

sysadmin @ suselinux1: ~> con sysadmin kaiser Bienvenue dans Ubuntu 12.04.1 LTS (GNU / Linux 3.2.0-25-i686 générique)

Dernière connexion: Ven 9 nov 15:40:11 2012 à partir du 10.1.3.25 sysadmin @ kaiser: ~ $ date vie nov 9 17:53:11 CST 2012 sysadmin @ kaiser: ~ $

theunbekanntshadow
la source
3
Faire quelque chose sans savoir ce qu'il fait et pourquoi cela fonctionne peut être acceptable, mais suggérer la même chose est mauvais, et pour être juste, pire s'il s'agit d'un système de sécurité.
Mahesh
2
D'accord. que cela soit une incitation à créer de meilleurs sshddocuments, qui ne tombent pas exactement dans la catégorie "lecture agréable du samedi"
code_monk