Il m'a fallu des heures pour résoudre ce problème SSH avec l'un de mes comptes de classe sur les serveurs de mon école.
Je ne pouvais pas accéder à un compte de classe particulier sans entrer mon mot de passe, tandis que l'authentification sans mot de passe fonctionnait avec mes autres comptes de classe. Le répertoire .ssh/et tout son contenu avaient les mêmes autorisations correctes que les autres comptes de classe.
Il s'avère que le problème était les autorisations définies sur mon propre répertoire personnel. L'authentification sans mot de passe ne fonctionnait pas lorsque les autorisations sur mon répertoire HOME étaient définies sur 770 (quelles que soient les autorisations définies pour .ssh /), mais cela fonctionnait avec les autorisations définies sur 755 ou 700.
Quelqu'un sait pourquoi SSH fait cela? Est-ce parce que les autorisations du répertoire personnel sont trop permissives? Pourquoi SSH refuse-t-il de s'authentifier avec les clés publiques/privées lorsque le répertoire personnel est défini plus permissif que 700?
Il s'agit du comportement par défaut pour SSH. Il protège les clés utilisateur en appliquant rwx------
sur $HOME/.ssh
et en veillant à ce que seul le propriétaire dispose de droits d'écriture sur $HOME
. Si un utilisateur autre que le propriétaire respectif dispose d'une autorisation d'écriture sur le $HOME
, ils pourraient modifier par malveillance les autorisations sur $HOME/.ssh
, détournant potentiellement les clés utilisateur, known_hosts
, ou quelque chose de similaire. En résumé, les autorisations suivantes sur $HOME
sera suffisant pour que SSH fonctionne.
rwx------
rwxr-x---
rwxr-xr-x
SSH ne fonctionnera pas correctement et enverra des avertissements aux installations de journalisation si toute variation de g+w
ou o+w
existe sur le $HOME
répertoire. Cependant, l'administrateur peut remplacer ce comportement en définissant StrictModes no
dans le sshd_config
(ou similaire) fichier de configuration, mais il doit être clair qu'il s'agit de non recommandé.
77x sur votre répertoire personnel signifie que tout le monde avec un GID correct peut déplacer votre répertoire .ssh et le remplacer par un autre. Les utilisateurs avec le GID correct ont des autorisations d'écriture/exécution sur le répertoire personnel et peuvent donc renommer/créer des fichiers/répertoires.
SSH est très pointilleux en ce qui concerne les autorisations, et il le devrait.