Comme cela n'a pas été explicitement mentionné, sshd est par défaut très strict sur les permissions pour le fichier authorized_keys
fichiers. Ainsi, si authorized_keys
es accessible en écriture pour toute personne autre que l'utilisateur ou peut être rendu accessible en écriture par quelqu'un d'autre que l'utilisateur, il refusera de s'authentifier (à moins que sshd ne soit configuré avec le paramètre StrictModes no
)
Ce que je veux dire par "peut être rendu accessible en écriture", c'est que si l'un des répertoires parents est accessible en écriture pour quelqu'un d'autre que l'utilisateur, les utilisateurs autorisés à modifier ces répertoires peuvent commencer à modifier les permissions de manière à pouvoir modifier/remplacer les authorized_keys.
En outre, si le /home/username/.ssh
n'appartient pas à l'utilisateur, et donc l'utilisateur n'a pas les droits pour lire la clé, vous pouvez rencontrer des problèmes :
drwxr-xr-x 7 jane jane 4096 Jan 22 02:10 /home/jane
drwx------ 2 root root 4096 Jan 22 03:28 /home/jane/.ssh
Notez que Jane ne possède pas le .ssh
fichier. Corrigez cela via
chown -R jane:jane /home/jane/.ssh
Ces sortes de problèmes de permission du système de fichiers n'apparaîtront pas avec ssh -v
et ils n'apparaîtront même pas dans les journaux de sshd ( !) tant que vous n'aurez pas réglé le niveau du journal sur DEBUG.
- Modifier
/etc/ssh/sshd_config
. Vous voulez une ligne qui dit LogLevel DEBUG
là-dedans, quelque part. Rechargez le serveur SSH en utilisant le mécanisme fourni par la distribution. ( service sshd reload
sur RHEL/CentOS/Scientific). Un rechargement en douceur ne supprimera pas les sessions existantes.
- Essayez de vous authentifier à nouveau.
- Déterminez où se trouvent les journaux de votre installation d'authentification et lisez-les. (IIRC,
/var/log/auth.log
sur les distros basées sur Debian ; /var/log/secure
sur RHEL/CentOS/Scientific).
Il est beaucoup plus facile de comprendre ce qui ne va pas avec la sortie de débogage qui inclut les erreurs de permission du système de fichiers. N'oubliez pas de revenir sur la modification de /etc/ssh/sshd_config
quand c'est fait !
12 votes
"Ça marchait avant" -- avant ce que ?
0 votes
J'ai une instance Elastic Beanstalk EC2. En août 2013, la solution était d'accéder à l'instance en tant qu'utilisateur ec2-user, ce qui a fait disparaître l'erreur Permission Denied (publicKey). Viz : ssh -i ./mike-key-pairoregon.pem ec2-user@ec2-some-address.us-west-2.compute.amazonaws.com. Bien sûr, vous devez effectuer toutes les autres opérations, comme indiqué dans le tableau suivant stackoverflow.com/questions/4742478/
4 votes
Vous obtenez ce problème si vous avez spécifié un nom d'utilisateur incorrect. La documentation d'aws ( docs.aws.amazon.com/AWSEC2/latest/UserGuide/ ) donne actuellement un exemple avec le nom d'utilisateur ec2-user [ssh -i /path/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com], alors que ma (vieille) boîte ubuntu a un nom d'utilisateur ubuntu, donc quand j'ai utilisé l'exemple j'ai reçu cette erreur, changer pour le nom d'utilisateur correct résout le problème.
0 votes
@david.barkhuizen, votre commentaire m'a aidé. J'ai eu un problème similaire ; il s'est avéré que cela avait à voir avec le nom d'utilisateur. Merci.
0 votes
Si quelqu'un est ici pour Bitnami WordPress, alors 'bitnami' est le nom d'utilisateur que vous devez utiliser pour la connexion SSH.
0 votes
Liés : askubuntu.com/questions/311558/ssh-permission-denied-publickey