59 votes

Le serveur continue de demander un mot de passe après que j'ai copié ma clé publique SSH dans authorized_keys

J'ai un serveur Ubuntu, fonctionnant dans un nuage. J'ai créé un utilisateur ( git ). Dans le dossier /home/git J'ai créé le .ssh/ dir, et le authorized_keys fichier.

Mais, lorsque je mets ma clé publique SSH dans le fichier authorized_keys le serveur continue à me demander le mot de passe.

Qu'est-ce que j'ai fait de mal ?

52voto

Fabrizio C. Points 1265

Du côté du serveur, le démon ssh enregistrera les erreurs dans le fichier /var/log/auth.log Vérifiez donc ce fichier pour voir ce qui est rapporté.

Du côté client, lors de l'établissement de la connexion, vous pouvez ajouter l'attribut -v (ou -vv o -vvv ) pour augmenter la verbosité. Vous pourrez peut-être identifier votre problème de cette façon.

Voici d'autres éléments à vérifier.

  • Assurez-vous que /home/git/.ssh/authorized_keys est détenu par git .
  • Assurez-vous que /home/git/.ssh/authorized_keys a un mode de 600 ( -rw------- ).

Vérifiez également le /etc/ssh/sshd_config fichier.

  • PubkeyAuthentication doit être réglé sur yes
  • Il y a aussi le AuthorizedKeysFile qui détermine le chemin où les clés autorisées doivent être situées. Assurez-vous qu'elle est commentée ou sur la valeur par défaut de %h/.ssh/authorized_keys .

20voto

Vinayak Points 10262

Assurez-vous également que le répertoire personnel de votre utilisateur (dans votre cas, /home/git) n'est accessible en écriture que par vous. J'ai eu ce problème une fois parce que mon répertoire personnel était accessible en écriture par le groupe. Le fichier /var/log/auth.log indiquait : "Authentication refused : bad ownership or modes for directory /home/chuck". (c'est pour s'assurer qu'il n'utilise pas un fichier authorized_keys avec lequel quelqu'un d'autre que vous a joué).

5voto

Aaron Orr Points 11

Il existe plusieurs façons de résoudre ce problème : vous pouvez configurer soit sshd (côté serveur) ou ssh (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 rend votre serveur plus sûr, mais vous aurez des problèmes si vous perdez votre clé.

Pour faire ssh (côté client) en utilisant l'authentification par clé publique, ajoutez quelques options à la commande ssh commandement :

ssh -o PubkeyAuthentication=yes -o PasswordAuthentication=no -X git@server

Si cela fonctionne, vous pouvez définir le PasswordAuthentication=no de façon permanente dans le fichier de configuration du client ssh /etc/ssh/ssh_config à l'échelle du système ou ~/.ssh/config spécifique à l'utilisateur (pour plus de détails, voir man ssh_config ).

4voto

Dave Veffer Points 933

Utilisez-vous ~/.ssh/config sur votre machine locale ? 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 :

Host Cloud
    Hostname cloud.theclouds.com
    User git
    IdentityFile ~/.ssh/config/mykey # This is correct

    # IdentityFile ~/.ssh/config/mykey.pub # This is incorrect

3voto

user130705 Points 21

Si vous avez plusieurs clés privées, utilisez le commutateur -v sur votre commande de connexion ssh pour vérifier si vos autres clés primaires sont utilisées pour essayer de se connecter. Si elles ne le sont pas, indiquez au client ssh de les utiliser avec la commande suivante :

ssh-add path/to/private/key

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X