J'ai un serveur Ubuntu fonctionnant dans un nuage. J'ai créé un utilisateur ( git
). Dans le dossier /home/git
, j'ai créé le répertoire .ssh/
et le authorized_keys
fichier.
Mais lorsque je mets ma clé publique SSH dans le authorized_keys
fichier, le serveur continue à me demander le mot de passe.
Qu'ai-je fait de mal?
Réponses:
Du côté du serveur, le démon ssh enregistre les erreurs
/var/log/auth.log
. Consultez ce fichier pour voir ce qui est signalé.Du côté client, lors de l’établissement de la connexion, vous pouvez ajouter l’
-v
indicateur (ou-vv
ou-vvv
) pour augmenter la verbosité. Vous pourrez peut-être identifier votre problème de cette façon.Voici d'autres choses à vérifier.
/home/git/.ssh/authorized_keys
appartientgit
./home/git/.ssh/authorized_keys
avoir un mode de 600 (-rw-------
).Vérifiez également le
/etc/ssh/sshd_config
fichier.PubkeyAuthentication
devrait être réglé suryes
AuthorizedKeysFile
directive qui détermine le chemin où les clés autorisées doivent être localisées. Assurez-vous qu'il est commenté ou sur le défaut de%h/.ssh/authorized_keys
.la source
/var/log/auth.log
fichier? Y a-t-il un moyen de l'activer?sudo service ssh restart
Assurez-vous également que votre répertoire personnel (dans votre cas, / home / git) est accessible en écriture pour vous. J'ai eu ce problème une fois parce que mon répertoire personnel était en écriture de groupe. /var/log/auth.log a déclaré: "Authentification refusée: mauvaise propriété ou modes pour le répertoire / home / chuck". (Cela permet de s’assurer qu’il n’utilise pas un fichier allowed_keys avec lequel un autre joueur s’est occupé de vous!)
la source
Il existe différentes façons de résoudre ce problème: vous pouvez configurer
sshd
(côté serveur) oussh
(côté client) de ne pas utiliser l'authentification par mot de passe. La désactivation de l'authentification par mot de passe sur le serveur renforce la sécurité de votre serveur, mais vous aurez des problèmes si vous perdez votre clé.Pour effectuer
ssh
(côté client) à l'aide de l'authentification par clé publique, ajoutez quelques options à lassh
commande:Si cela fonctionne, vous pouvez définir cette
PasswordAuthentication=no
option de manière permanente dans le fichier de configuration du client ssh, spécifique au/etc/ssh/ssh_config
système ou~/.ssh/config
spécifique à l'utilisateur (pour plus de détails, voirman ssh_config
).la source
/etc/ssh/ssh_config
) sur les systèmes Debian / Ubuntu préfèrent déjàPubkeyAuthentication
et essaient d’abord, comme vous pourrez le constater lors de l’appelssh
en mode détaillé.Utilisez-vous ~ / .ssh / config sur votre ordinateur local? J'ai rencontré ce problème lorsque j'utilise la directive IdentityFile dans le fichier de configuration et que je pointe vers la clé publique. Par exemple:
la source
Si votre dossier personnel est crypté, votre
authorized_keys
fichier n'est pas lisible avant la connexion. Vous devez le déplacer en dehors de votre maison.Voici expliqué et comment faire: https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Troubleshooting
la source
Une autre chose à vérifier est de savoir s'il y a des retours chariot supplémentaires dans votre clé publique. J'ai suivi le conseil ci-dessus pour consulter le fichier /var/log/auth.log et j'ai constaté une erreur lors de la lecture de la clé. La clé avait environ deux lignes au lieu de quatre. Il y avait des retours chariot supplémentaires intégrés dans la clé.
Lorsque vous utilisez l'éditeur vi, utilisez shift-j pour joindre les lignes et effacer l'espace supplémentaire dans la chaîne de clé.
la source
sshd_config
. Je me suis cogné la tête contre le mur pendant une demi-heure. C'était ma faute! D'une manière ou d'une autre, j'ai pris l'habitude de mettre fin à tous les fichiers que je modifie à la main avec un saut de ligne supplémentaire. Même avec une clé et un retour chariot à la fin , il suffit de gâcher l'autorisation.Si vous avez plusieurs clés privées, utilisez la commande -v sur votre commande de connexion ssh pour vérifier si vos autres clés primaires sont en cours d'utilisation pour vous connecter. Si ce n'est pas le cas, dites au client ssh de les utiliser avec la commande suivante:
la source
Vous pouvez également ajouter votre clé à l'agent SSH:
la source
Il se peut aussi que vous appeliez
sudo git clone gituser@domain:repo.git
où n'a pas été ajouté la clé de l'utilisateur root à
authorized_keys
desgituser
la source
Sur une machine fonctionnant sous Ubuntu 18.04.02 LTS, la suggestion de définir les autorisations
~/.ssh
sur 600 ne fonctionnait pas pour moi. J'ai dû définir les autorisations sur 700, puis tout a bien fonctionné.la source
J'avais les autorisations de fichiers .ssh / directory et allowed_keys correctes, mais j'ai rencontré ce problème de "demande de mot de passe" en raison d'un problème différent, provoqué par l'utilisateur
J'avais utilisé un surlignage et un copier / coller basés sur la souris pour copier les informations de mon id_rsa.pub local dans le fichier allowed_keys sur le serveur. Cela a réussi à copier les données en une seule ligne, mais il y avait des espaces indésirables à la fin des lignes visibles difficiles à voir lors de l'édition du fichier avec vi. Une fois que j'ai enlevé ces espaces non désirés, je pouvais entrer dans SSH.
la source
Donc, ce qui m'est arrivé, c’est que j’ai accès à 2 ordinateurs virtuels à partir de mon ordinateur local (2 clés id_rsa.pub et id_rsa2.pub). Je me suis rendu compte que ma connexion ssh utilise id_rsa.pub par défaut pour toute connexion ssh [email protected]. J'ai résolu mon problème en ajoutant un fichier de configuration et en spécifiant l'identité à utiliser pour chaque hôte, comme suit:
la source