Git-Permission denied (publickey)

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 avec aucune phrase de passe mais toujours la même erreur.

459
demandé sur Patrick Mevzek 2010-04-15 11:46:34

30 réponses

cette information fonctionne sur theChaw, mais peut être appliquée à tous les autres dépôts git qui prennent en charge les Authentifications pubkey SSH. (Voir gitolite , gitlab ou github par exemple.)

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

  • vous voulez D'abord de cd dans votre .répertoire ssh. Ouvrir le terminal et exécutez:

    cd ~/.ssh && ssh-keygen

  • ensuite, vous devez copier ceci dans votre presse-papiers.
    • Sur OS X, exécutez: cat id_rsa.pub | pbcopy
    • sur Linux run: cat id_rsa.pub | xclip
    • sur Windows (via Cygwin/Git Bash) exécuter: cat id_rsa.pub | clip
  • Ajouter votre clé votre compte via le site web.
  • a finalement mis en place 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 vous assurer que la config est rechargée)

c'est ça, vous devriez être à cloner et à la caisse.

pour plus d'informations, veuillez consulter https://help.github.com/articles/generating-ssh-keys (merci à @Lee Whitney)

547
répondu Rufinus 2015-12-16 00:32:52

un dépannage plus étendu et même une fixation automatisée peuvent être faits avec:

ssh -vT git@github.com

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

158
répondu nottinhill 2018-05-12 13:16:24

cette erreur peut se produire lorsque vous accédez à L'URL SSH (Read/Write) au lieu de L'URL Git Read-Only, mais que vous n'avez pas d'accès en écriture à ce rapport.

parfois vous voulez simplement cloner votre propre repo, par exemple 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 c'est votre préférence. Dans cette situation, si la clé publique de votre hôte distant n'est pas dans votre GitHub Clés SSH, votre accès sera refusé, ce qui est prévu pour se produire .

un cas équivalent est lorsque vous essayez de cloner la pension de quelqu'un d'autre à laquelle vous n'avez pas accès en écriture avec L'URL ssh.

en un mot, si votre intention est de cloner-seulement 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 (inutile) la validation de la clé publique.


mise à jour: GitHub affiche maintenant HTTPS comme protocole par défaut et cette modification peut probablement réduire les possibilités d'utilisation abusive des URL ssh.

126
répondu kavinyao 2014-10-16 08:29:02

Le github de l'aide lien m'a aidé à régler ce problème. On dirait que la clé ssh n'a pas été ajoutée à l'agent ssh. C'est ce que j'ai fait.

commande 1:

s'assurer que ssh-agent est activé. La commande démarre l'agent ssh en arrière-plan:

eval "$(ssh-agent -s)"

commande 2:

ajouter votre clé SSH à l'agent ssh:

ssh-add ~/.ssh/id_rsa
78
répondu jarora 2016-10-29 07:14:15

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 (par exemple: ssh-add ~/.SSH / id_rsa ))

(si vous n'avez pas de clés, créez-en d'abord une. Voir: http://rcsg-gsir.imsb-dsgi.nrc-cnrc.gc.ca/documents/internet/node31.html ou tout simplement google ssh-keygen)

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

passer à: 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 vu lorsque vous avez tapé ssh-add -l il y a une minute.

si vous ne le faites pas, ajoutez-en un, puis réessayez.

17
répondu Mason Bryant 2013-01-17 20:13:19

ça marche pour moi:

ssh-add ~/.ssh/id_rsa
13
répondu Wouter Schoofs 2017-01-07 12:17:57

j'ai eu une situation légèrement différente, j'ai été connecté sur un serveur distant et j'utilisais git sur le serveur, quand j'ai lancé n'importe quelle commande git j'ai eu le même message

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

la façon dont je l'ai corrigé en changeant le fichier /etc/ssh_config sur mon Mac. de

ForwardAgent no 

à

ForwardAgent yes
12
répondu Richipal 2013-12-17 00:43:12

a eu le même rapport d'erreur.

corrigé avec L'utilisation de HTTP à la place. Puisque je ne veux pas de "SSH keys" pour un PC de test.

changer L'URL en HTTP quand clone:

git clone https://github.com/USERNAME/REPOSITORY.git

mon problème est un peu différent : j'ai défini L'URL lors de l'ajout d'un local repo existant à distance, en utilisant:

git remote add origin ssh://github.com/USERNAME/REPOSITORY.git

pour le corriger, réinitialisez L'URL vers :"

git remote set-url origin https://github.com/USERNAME/REPOSITORY.git

BTW, vous pouvez vérifier votre URL en utilisant la commande:

git remote -v
origin  https://github.com/USERNAME/REPOSITORY.git (fetch)
origin  https://github.com/USERNAME/REPOSITORY.git (push)

J'espère que cela aidera quelqu'un comme moi. : D

12
répondu Robina Li 2018-01-03 23:58:08

j'ai rencontré la même question parce que je pensais que la différence entre SSH et HTTPS est

https://github.com/USERNAME/REPOSITORY.git

ssh://github.com/USERNAME/REPOSITORY.git

J'ai donc changé de HTTPS en ssh juste en changeant https:// en ssh:// rien à la fin de l'url n'a été changé.

mais la vérité est:

https://github.com/USERNAME/REPOSITORY.git

git@github.com:USERNAME/REPOSITORY.git

ce qui signifie que j'ai changé ssh://github.com/USERNAME/REPOSITORY.git en git@github.com:USERNAME/REPOSITORY.git ça marche.

erreur stupide mais l'espoir aide quelqu'un!

9
répondu William Hu 2018-09-03 19:11:27

je me débattais avec le même problème que j'ai fait et j'ai été capable de cloner le repo. J'ai suivi cette procédure pour iMac .

première étape : vérifier si nous avons déjà la clé publique SSH.

  1. Ouvrir Un Terminal.
  2. entrer ls -al ~/.ssh pour voir si les clés SSH existantes sont présentes:

vérifier l'annuaire pour voir si vous avez déjà une clé publique SSH.Le public par défaut est l'un des d_dsa suivants.pub, id_ecsa.pub, id_ed25519.pub, id_rsa.pub

si vous ne trouvez pas alors aller à l'étape 2 sinon suivre l'étape 3

Etape 2 : Générer une clé SSH publique

  1. Ouvrir Un Terminal.
  2. entrez la commande followong avec votre adresse e-mail valide que vous utilisez pour github ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  3. vous verrez la suite dans le terminal Generating public/private rsa key pair . Quand il invite à "Enter a file in which to save the key," appuyez sur Entrée. Ceci accepte l'emplacement du fichier par défaut. Quand il invite à Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter] il suffit de presser enter à nouveau. À l'invite, tapez une phrase de passe sécurisée.
  4. Enter passphrase (empty for no passphrase): [Type a passphrase] appuyez sur entrer si vous ne voulez pas Enter same passphrase again: [Type passphrase again] appuyez sur enter " entrée

cela générera id_rsa.pub

Étape 3: Ajouter votre clé SSH à l'agent ssh

  1. de type criminel eval "$(ssh-agent -s)"
  2. ajoutez votre clé SSH à l'agent ssh. Si vous utilisez un SSH existant clé plutôt que de générer une nouvelle clé SSH, vous devrez remplacer id_rsa dans la commande avec le nom de votre clé privée existante fichier. Entrez cette commande $ ssh-add -K ~/.ssh/id_rsa

copiez maintenant la clé SSH et ajoutez - la à votre compte github

  1. dans le terminal Entrez cette commande avec votre nom de fichier ssh pbcopy < ~/.ssh/id_rsa.pub cela copiera le fichier à votre bloc-notes Maintenant, ouvrez votre compte Github allez dans paramètres > clés SSH et GPG > nouvelle clé SSH entrez le titre et collez la clé du presse-papiers et sauvegardez-la. Voila vous avez terminé.
7
répondu Zeeshan Shabbir 2017-05-24 05:17:52

sur Windows, assurez-vous que toutes vos applications sont d'accord sur la maison. Msys ne le fera pas pour vous. J'ai dû définir une variable d'environnement parce que ssh et git ne semblaient pas d'accord sur l'endroit où la mienne .ssh répertoire.

6
répondu Jason 2012-11-07 20:58:26

les instructions générales de GIT ne faisaient pas référence aux clés SSH. En suivant certains des liens ci-dessus, j'ai trouvé une page d'aide git qui explique, étape par étape, exactement comment faire ceci pour divers systèmes d'exploitation (le lien détectera votre OS et redirigera, en conséquence):

http://help.github.com/set-up-git-redirect /

il marche à travers tout ce qui est nécessaire pour GITHub et donne également des explications détaillées telles que comme "Pourquoi ajouter une phrase de passe lors de la création d'une clé RSA."J'ai pensé le poster, au cas où ça aiderait quelqu'un d'autre...

5
répondu gMale 2012-05-02 19:36:29

Êtes-vous un environnement de l'entreprise ? Est-il possible que les variables de votre système aient récemment changé? Par ce AFIN de répondre, les clés ssh en live au %HOMEDRIVE%%HOMEPATH%\.ssh\id_rsa.pub . Donc si %HOMEDRIVE% a récemment changé, git ne sait pas où chercher votre clé, et donc toutes les choses d'authentification.

Essayez d'exécuter ssh -vT git@github.com . Prenez note de l'emplacement du identity file . Pour moi, c'était pointer pas à mon normale \Users\MyLogin , mais plutôt à un lecteur réseau, en raison d'une modification des variables d'environnement poussé au niveau du réseau.

la solution? Puisque mon nouveau %HOMEDRIVE% a les mêmes permissions que mes fichiers locaux, je viens de déplacer mon .le dossier ssh là-bas, et appelé un jour.

4
répondu Andrew 2014-05-30 17:43:38

Un de la manière la plus simple

aller à la borne-

  git push <Git Remote path> --all
4
répondu Vizllx 2016-04-20 06:17:39

les gars c'est comme ça que ça a marché pour moi:

1-Ouvrez le terminal et allez à l'utilisateur [voir l'image ci-jointe]

2-Ouvert .dossier ssh et assurez-vous qu'il n'a aucun fichier comme id_rsa ou id_rsa.pub sinon parfois, il ne sera pas correctement réécrire les fichiers

3 - git --version [Vérifier git d'installation et version]

4 - git config -- global user.email "Votre email id"

5-git config -- global user.nom" votre nom "

6 - git config --list [assurez-vous que vous avez configuré votre nom et email]

7-cd ~/.ssh

8 - ssh-keygen, il invite à sauvegarder le fichier, l'autoriser

9-cat ~/.SSH / id_rsa.pub [Accéder à votre clé publique et de la copie de la clé de gerrit paramètres]

Note : vous ne devez pas utiliser la commande sudo avec Git. Si vous avez une très bonne raison vous devez utiliser sudo, puis vous assurer que vous l'utilisez avec chaque commande (il est probablement juste préférable d'utiliser su pour obtenir un shell comme root à ce point). Si vous générez des clés SSH sans sudo et puis essayez d'utiliser une commande comme sudo git push, vous n'utiliserez pas les mêmes clés que vous avez généré

enter image description here

enter image description here

4
répondu vikram jeet singh 2016-05-18 03:47:46

en plus de la réponse de Rufinus, le raccourci pour copier votre clé ssh sur le bloc-notes dans Windows est:

  • type id_rsa.pub | clip

Réfs:

3
répondu Jonathan 2017-05-23 12:10:47

je viens de faire l'expérience de ce problème en mettant en place mon projet actuel, et aucune des solutions ci-dessus ne fonctionne. donc j'ai essayé de regarder ce qui se passe vraiment sur la liste de débogage en utilisant la commande ssh-vT git@github.com. Je remarque que mon nom de fichier de clé privée n'est pas sur la liste. ainsi, renommer le nom de fichier de la clé privée en 'id_rsa' fait le travail. espérons que cela pourrait les aider.

2
répondu Rhey M. 2015-12-13 09:21:10

si vous avez plus d'une clé vous pouvez avoir besoin de faire ssh-add private-keyfile

2
répondu kashif 2016-07-03 00:08:32

C'est assez simple. Tapez la commande

ssh-keygen -t rsa -b 4096 -C "youremailid@yourdomain.com"

génère la clé SSH. Ouvrez le fichier et copier le contenu. Allez à la page de configuration de GitHub, et cliquez sur la touche ssh . Cliquez sur Ajouter une nouvelle touche SSH, et collez le contenu ici. C'est tout :) Vous ne devriez pas voir de nouveau le problème.

2
répondu karthik339 2016-08-23 05:42:34

j'obtenais une erreur similaire Permission refusée (publicickey) en essayant d'exécuter un makefile.

comme alternative aux étapes SSH ci-dessus, vous pouvez installer le GitHub natif pour L'application Mac.

, Cliquez sur Télécharger GitHub pour Mac de - https://help.github.com/articles/set-up-git#platform-mac

une fois que vous avez terminé la configuration avec votre git hub compte (j'ai aussi installé les outils de ligne de commande git hub mais je ne sais pas si cette étape est nécessaire ou non) alors j'ai reçu un e-mail-

[GitHub] une nouvelle clé publique a été ajoutée à votre compte

et mon erreur a été corrigée.

1
répondu WickedW 2013-06-13 17:01:22

j'ai eu la même erreur. Mon problème était de me mélanger à sudo.

Je ne pouvais pas créer le répertoire dans lequel je clonais automatiquement sans préfixer la commande git clone avec sudo. Quand j'ai fait cela, cependant, mes clés SSH n'étaient pas référencées correctement.

pour le corriger, j'ai défini les permissions via chmod sur le répertoire parent que je voulais contenir mon clone pour pouvoir lui écrire. Puis j'ai lancé git clone sans préfixe sudo. Ensuite, il travaillé! J'ai changé les permissions de retour après que. Faire.

1
répondu BuvinJ 2015-07-29 19:24:35

j'ai eu cette erreur parce que j'ai généré les clés ssh avec le mauvais email. J'ai pu me connecter avec ssh, mais pas avec git. La solution était de régénérer les clés en utilisant l'adresse e-mail principale de mon compte github.

1
répondu Charles Brunet 2015-12-15 18:59:56

ça a marché pour moi.

votre clé publique est sauvegardée sur l'id_rsa.pub; file est la clé que vous téléchargez sur votre compte. Vous pouvez enregistrer cette clé dans le presse-papiers:

pbcopy < ~/.SSH / id_rsa.pub

  • copier la touche SSH dans le presse-papiers, retourner au portail web.
  • dans le champ clé SSH, collez votre clé SSH.
  • dans le nom domaine, donner un nom à la clé.
  • enregistrer .
1
répondu Harshikesh Kumar 2016-02-14 05:12:28

Il a travaillé pour moi

ssh -i [your id_rsa path] -T github@github.com
1
répondu Mr陈哲 2016-04-06 07:26:21

la solution la plus simple pour cela, lorsque vous essayez de passer à un dépôt avec un nom d'utilisateur différent est:

 git remote set-url origin https://USERNAME@github.com/USERNAME/PROJECTNAME.git
1
répondu Nizar B. 2016-11-20 21:28:05

cette étrange erreur, dans mon cas était un symptôme de gnome-keyring-daemon nommant incorrectement la clé à laquelle il fallait un mot de passe.

je suis les étapes décrites ici, et j'ai entré le mot de passe via le terminal. L'erreur, alias l'interface GUI confusionnelle, a été résolue. Voir: https://askubuntu.com/questions/3045/how-to-disable-gnome-keyring

1
répondu rivanov 2017-06-26 04:50:35

dans mon cas, j'ai réinstallé ubuntu et le nom d'utilisateur est modifié par rapport au précédent. Dans ce cas, la clé SSH générée diffère également de la précédente.

le problème résolu en copiant simplement la clé publique SSH actuelle, dans le dépôt. La clé sera disponible dans votre utilisateur /home/.ssh/id_rsa.pub

1
répondu Sonu 2017-07-06 07:19:08

dans mon MAC j'ai résolu cela avec:

cp ~/.ssh/github_rsa ~/.ssh/id_rsa

pour une raison quelconque, mon git s'est arrêté pour trouver la clé privée dans le fichier github_rsa . Cela s'est produit dans un repo spécifique. Je veux dire que dans d'autres dépôts, git a continué à fonctionner normalement.

je pense que c'est un bug.

je pourrais trouver ce comportement tournant ssh -vT git@github.com

1
répondu CelinHC 2017-07-27 12:59:54

utilisez le lien ssh de Github mais assurez-vous de ne pas l'ajouter avec ssh utilisez simplement ce que l'onglet ssh sur Git hub vous donne pour cloner votre pension.

0
répondu pal4life 2012-09-05 17:53:30

j'ai pu surmonter ce problème en suivant les étapes ci-dessous dans mon système ubuntu. Comme j'expérimentais avec passwordless ssh au système.

sudo vi / etc/ssh / sshd_config

1) commenté ci-dessous : #Changement no pour désactiver dissimulé texte en clair des mots de passe # PasswordAuthentication yes PasswordAuthentication no - - - - > commente ceci.

2) puis redémarré le démon sshd comme ci-dessous.

service redémarrage sshd

0
répondu lambzee 2017-04-03 09:31:24