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?


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

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).


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


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.


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.


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

1

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


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

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

-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: ~ $


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.