1102 votes

Git : Comment résoudre l'erreur Permission refusée (publickey) lors de l'utilisation de Git ?

Je suis sur Mac Snow Leopard et je viens d'installer git .

Je viens d'essayer

git clone git@thechaw.com:cakebook.git

mais cela me donne cette erreur :

Initialized empty Git repository in `/Users/username/Documents/cakebook/.git/`
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Qu'est-ce que je rate ?
J'ai aussi essayé de faire ssh-keygen sans passphase mais toujours la même erreur.

14 votes

Avez-vous essayé de télécharger la clé publique que vous avez générée via ssh-keygen ?

0 votes

Mon problème est que j'ai essayé de cloner à partir de sudo - c'est un autre utilisateur avec une autre clé publique.

0 votes

Même erreur. J'ai précédemment créé une clé publique par l'intermédiaire de github, puis généré une autre paire de clés avec l'option ssh-keygen utilitaire. La suppression de l'ancienne clé publique dans les paramètres personnels sur github et l'ajout de ma clé id_rsa.pub générée par ssh aux clés SSH et GPG ont réglé les problèmes d'autorisation de clonage.

1296voto

Rufinus Points 8148

Si l'utilisateur n'a pas généré de paire de clés publiques/privées ssh auparavant

Cette information fonctionne sur theChaw mais peut être appliquée à tous les autres dépôts git qui supportent les authentifications par clé publique SSH. (Voir [gitolite][1], gitlab ou github par exemple).

Commencez par configurer votre propre jeu de paires de clés publiques/privées. Ce peut utiliser DSA ou RSA, donc n'importe quelle clé que vous configurez fonctionnera. Sur la plupart des systèmes, vous pouvez utiliser ssh-keygen.

  • Tout d'abord, vous devez vous rendre dans votre répertoire .ssh. Ouvrez le terminal et exécutez :

cd ~/.ssh && ssh-keygen

  • Ensuite, vous devez copier ceci dans votre presse-papiers.
  • Sous OS X, exécutez : cat id_rsa.pub | pbcopy
  • Sous Linux : cat id_rsa.pub | xclip
  • Sous Windows (via Cygwin/Git Bash), exécutez : cat id_rsa.pub | clip
  • Sous Windows (Powershell), exécutez : Get-Content id_rsa.pub | Set-Clipboard (Thx à @orion elenzil)
  • Ajoutez votre clé à votre compte via le site web.
  • Enfin, configurez votre .gitconfig.
  • git config --global user.name "bob"
  • git config --global user.email bob@... (n'oubliez pas de redémarrer votre ligne de commande pour être sûr que la configuration est rechargée)

C'est tout, vous devriez être prêt à cloner et à vérifier.

De plus amples informations sont disponibles à l'adresse suivante https://help.github.com/articles/generating-ssh-keys (merci à @Lee Whitney) [1] : https://github.com/sitaramc/gitolite

-

Si l'utilisateur a généré une paire de clés publiques/privées ssh définie auparavant

  • vérifier quelles clés ont été autorisées dans les paramètres de votre compte github ou gitlab
  • déterminer quelle clé privée correspondante doit être associée à partir de votre ordinateur local

eval $(ssh-agent -s)

  • définir où se trouvent les clés

ssh-add ~/.ssh/id_rsa

10 votes

Ok. En fait, ce n'est pas un problème de git mais de synchronisation ssh. J'ai eu le même problème avec Assembla et votre lien m'a aidé à le résoudre. Merci !

0 votes

Cette réponse est utile mais celle-ci semble plus complète et tout aussi facile si vous générez des clés à partir de zéro : aide.github.com/articles/generating-ssh-keys

7 votes

J'ai rencontré un problème avec le keygen. Il est sensible à l'adresse e-mail dans une variable env globale. Au cas où vous auriez ce problème, vous voudrez spécifier l'adresse e-mail de votre compte github dans la première étape : ssh-keygen -t rsa -C "your_email@youremail.com"

315voto

Sir Ben Benji Points 1063

Il est possible d'effectuer un dépannage plus approfondi et même une réparation automatique :

ssh -vT git@github.com

Alternativement, selon les commentaires ci-dessous, nous pourrions publier :

ssh -vT git@gitlab.com

ou remplacez gitlab/github par l'instance Git utilisée par votre organisation.

Source : https://help.github.com/articles/error-permission-denied-publickey/

0 votes

Cela a fait une tonne de choses, puis à la fin j'ai remarqué 'authentifié avec succès', j'ai essayé git pull et tout allait bien à nouveau.

2 votes

Mon problème était lié au fait que j'avais une clé différente pour mon serveur. Une fois que j'ai utilisé la commande ci-dessus pour déterminer le problème, j'ai corrigé l'IdentifyFile dans mon fichier de configuration et cela a fonctionné.

2 votes

Montre la clé que github a essayé d'utiliser pour s'authentifier. v utile

228voto

kavinyao Points 440

Cette erreur peut se produire lorsque vous accédez à l'URL SSH (lecture/écriture) au lieu de l'URL Git en lecture seule mais que vous n'avez pas d'accès en écriture à ce repo.

Parfois, vous souhaitez simplement cloner votre propre dépôt, par exemple pour le déployer sur un serveur. Dans ce cas, vous n'avez besoin que d'un accès en lecture seule. Mais comme c'est votre propre repo, GitHub peut afficher l'URL SSH si vous le souhaitez. Dans cette situation, si la clé publique de votre hôte distant ne figure pas dans vos clés SSH GitHub, votre accès sera refusé, ce qui devrait se produire .

Un cas équivalent est celui où vous essayez de cloner le dépôt de quelqu'un d'autre auquel vous n'avez pas accès en écriture avec l'URL SSH.

En un mot, si votre intention est de cloner uniquement un repo, utilisez l'URL HTTPS ( https://github.com/{user_name}/{project_name}.git ) au lieu de l'URL SSH ( git@github.com:{user_name}/{project_name}.git ), ce qui évite la validation (inutile) de la clé publique.


Mise à jour : GitHub affiche désormais HTTPS comme protocole par défaut, ce qui peut probablement réduire les abus possibles des URL SSH.

0 votes

Avec le https://github.com git url, il est toujours indiqué SSL certificate problem: self signed certificate in certificate chain . git -c http.sslVerify=false clone ... semble être un mouvement dangereux. Chrome ne donne pourtant aucun avertissement ssl. Qu'en pensez-vous ?

1 votes

@uos Désolé mais je n'ai jamais rencontré ce problème. La première chose à faire est peut-être d'essayer la même commande depuis une autre machine et de voir si le problème persiste.

2 votes

Ça l'a fait pour moi aussi. Merci. Pour cloner mon repo git sur mon compte d'hébergement mutualisé (1and1), j'ai du utiliser git clone https://github.com/MyUserName/MyRepo.git Il suffit de cliquer sur les liens texte situés sous l'URL du dépôt, à droite de la page Github, là où il est indiqué " Vous pouvez cloner avec HTTPS, SSH, ou Subversion. ". (Cliquez HTTPS pour obtenir le lien au lieu du lien par défaut SSH .)

26voto

Mason Bryant Points 562

Notez que (au moins pour certains projets) vous devez avoir un compte github avec une clé ssh .

Regardez les clés listées dans votre agent d'authentification ( ssh-add -l )
(si vous n'en voyez pas, ajoutez une de vos clés existantes avec ssh-add /path/to/your/key (ex : ssh-add ~/.ssh/id_rsa ))
(si vous n'avez pas de clé, commencez par en créer une. Voir : http://rcsg-gsir.imsb-dsgi.nrc-cnrc.gc.ca/documents/internet/node31.html ou simplement googler ssh-keygen)

Pour vérifier que vous avez une clé associée à votre compte github :

Allez-y : https://github.com/settings/ssh

Vous devriez voir au moins une clé avec une clé de hachage correspondant à l'un des hachages que vous avez vus lorsque vous avez tapé ssh-add -l il y a juste une minute.

Si ce n'est pas le cas, ajoutez-en un, puis réessayez.

0 votes

Ça a marché pour moi. Cela m'est arrivé parce que ma clé n'avait pas été ajoutée à l'agent d'authentification. Merci.

0 votes

Vous savez que vous avez ce problème si on vous a demandé de vous connecter avec une clé SSH (l'url ressemble à ceci git@github.company.com au lieu de https://github.company.com ) mais vos paramètres Github ne comportent pas de clé SSH. Github fournit des instructions étape par étape à l'adresse suivante docs.github.com/en/github/authenticating-to-github/ .

13voto

Richipal Points 493

J'ai eu une situation légèrement différente, j'étais connecté à un serveur distant et j'utilisais git sur le serveur, lorsque je lançais une commande git, j'obtenais le même message

   Permission denied (publickey).
   fatal: The remote end hung up unexpectedly

J'ai résolu le problème en modifiant le fichier /etc/ssh_config sur mon Mac. de

ForwardAgent no 

à

ForwardAgent yes

0 votes

L'erreur se produisait en essayant de récupérer des gemmes de github à partir d'une VM VirtualBox. J'ai mis à jour mon fichier Vagrant pour utiliser config.ssh.forward_agent = true J'ai redémarré la VM, et maintenant ça marche.

1 votes

Ce n'est peut-être pas le meilleur choix en termes de sécurité selon ce document : heipei.github.io/2015/02/26/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X