Le serveur continue de demander un mot de passe après avoir copié ma clé publique SSH sur authorized_keys

43

J'ai un serveur Ubuntu, exécuté dans un cloud. J'ai créé un utilisateur ( git ). Dans le dossier /home/git , j'ai créé le répertoire .ssh/ et le fichier authorized_keys .

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 je faisais mal?

    
posée Luis Dalmolin 07.03.2012 - 13:34
la source

9 réponses

42

Côté serveur, le démon ssh enregistre les erreurs dans /var/log/auth.log , alors vérifiez ce fichier pour voir ce qui est signalé.

Du côté du client, lors de l'établissement de la connexion, vous pouvez ajouter l'indicateur -v (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.

  • Assurez-vous que /home/git/.ssh/authorized_keys appartient à git .
  • Assurez-vous que /home/git/.ssh/authorized_keys a un mode de 600 ( -rw------- ).

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

  • PubkeyAuthentication doit être défini sur yes
  • Il y a aussi la directive AuthorizedKeysFile qui détermine la chemin où les clés autorisées doivent être localisées. Assurez-vous que c'est commenté ou sur la valeur par défaut de %h/.ssh/authorized_keys .
réponse donnée xeyes 07.03.2012 - 13:56
la source
17

Assurez-vous également que votre répertoire utilisateur (dans votre cas, / home / git) est uniquement accessible en écriture. J'ai eu ce problème une fois parce que mon répertoire personnel était inscriptible par groupe. /var/log/auth.log y a déclaré: "Authentification refusée: propriété incorrecte ou modes pour répertoire / home / chuck". (ceci pour s'assurer qu'il n'utilise pas un fichier authorized_keys avec lequel quelqu'un d'autre a joué avec vous!)

    
réponse donnée centipedefarmer 14.06.2013 - 15:32
la source
4

Il existe différentes manières de résoudre ce problème: vous pouvez configurer sshd (côté serveur) ou ssh (côté client) pour ne pas utiliser l'authentification par mot de passe. La désactivation de l'authentification par mot de passe sur le serveur améliore la sécurité de votre serveur, mais vous risquez de perdre votre clé.

Pour que ssh (côté client) utilise l’authentification de la pubkey, ajoutez des options à la commande ssh :

ssh -o PubkeyAuthentication=yes -o PasswordAuthentication=no -X [email protected]

Si cela fonctionne, vous pouvez définir l'option PasswordAuthentication=no de manière permanente dans le fichier de configuration du client ssh /etc/ssh/ssh_config pour l'ensemble du système ou ~/.ssh/config pour l'utilisateur (pour plus de détails, voir man ssh_config ).

    
réponse donnée tohuwawohu 07.03.2012 - 13:48
la source
3

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:

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

    # IdentityFile ~/.ssh/config/mykey.pub # This is incorrect
    
réponse donnée user1576 20.11.2013 - 23:09
la source
2

Si votre dossier de base est chiffré, votre fichier authorized_keys n'est pas lisible avant la connexion. Vous devez le déplacer à l'extérieur de votre maison.

Cette section explique comment procéder: lien

    
réponse donnée Fab V. 12.03.2014 - 07:59
la source
1

Une autre chose à vérifier est la présence de retours chariot supplémentaires dans votre clé publique. J'ai suivi les conseils ci-dessus pour examiner le fichier /var/log/auth.log et j'ai constaté une erreur lors de la lecture de la clé. La clé était d'environ deux lignes de long au lieu de quatre. Il y avait des retours chariot supplémentaires incorporé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é.

    
réponse donnée Victor 23.05.2013 - 02:02
la source
1

Si vous avez plusieurs clés privées, utilisez le commutateur -v de votre commande de connexion ssh pour vérifier si vos autres clés primaires sont utilisées pour essayer de vous connecter. Si ce n'est pas le cas, demandez au client ssh de les utiliser avec la commande suivante:

ssh-add path/to/private/key
    
réponse donnée Max 17.04.2014 - 10:28
la source
1

Vous pouvez également ajouter votre clé à l'agent SSH:

[email protected]:~$ ssh-agent bash
[email protected]:~$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/u/.ssh/id_rsa: # ENTER YOUR PASSWORD
Identity added: /home/u/.ssh/id_rsa (/home/u/.ssh/id_rsa)
    
réponse donnée TTT 09.09.2014 - 14:15
la source
0

Il se pourrait aussi que vous appeliez

sudo git clone [email protected]:repo.git

où la clé ssh des utilisateurs root n'a pas été ajoutée à authorized_keys of gituser

    
réponse donnée Stevie G 18.08.2015 - 20:57
la source

Lire d'autres questions sur les étiquettes