Message d’erreur GitHub – Autorisation refusée (publickey)

Quelqu’un a vu cette erreur et sait quoi faire?

J’utilise le terminal, je suis à la racine, le repository GitHub existe et je ne sais pas quoi faire maintenant.

> git push -u origin master Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 

GitHub n’est pas capable de vous authentifier. Ainsi, soit vous n’êtes pas configuré avec une clé SSH, car vous n’en avez pas défini une sur votre ordinateur , ou votre clé n’est pas associée à votre compte GitHub.

Vous pouvez également utiliser l’URL HTTPS au lieu de l’URL SSH / git pour éviter d’avoir à manipuler des clés SSH. C’est la méthode recommandée par GitHub .

De plus, GitHub a une page d’aide spécifique à ce message d’erreur et explique plus en détail tout ce que vous pouvez vérifier.

Vous devez générer une clé SSH (si vous n’en avez pas) et associer la clé publique à votre compte Github. Voir la propre documentation de Github .

Avez-vous créé un fichier de configuration dans votre répertoire ~ / .ssh? Il devrait avoir des contenus comme ceux-ci:

 Host github.com IdentityFile ~/.ssh/github_rsa 

En supposant que vous avez créé une clé ssh nommée github_rsa

et l’a téléchargé sur GitHub …

REMARQUE: Vous devez suivre cette méthode de configuration explicite si vous avez plus d’une clé (2 et plus) dans votre répertoire ~ / .ssh /. Si vous ne spécifiez pas de clé de cette manière, la première clé est utilisée et utilisée pour l’authentification github. Elle dépend donc du nom du fichier de clé.

Cela m’est arrivé Pour une raison quelconque mon origine a été gâchée sans que je m’en rende compte:

Vérifiez si vos parameters sont toujours corrects

 git remote -v 

L’URL doit être quelque chose comme ssh: //git@github.com/YourDirectory/YourProject.git; si vous ne voyez pas git@github.com, utilisez

 git remote set-url origin git://github.com/YourDirectory/YourProject.git 

pour le régler correctement. Vous pouvez également utiliser l’application github pour vérifier et définir l’URL du référentiel distant principal dans le panneau des parameters de votre référentiel particulier.

Je connais ce problème. Après l’ajout de la clé ssh, ajoutez également la clé ssh à l’agent ssh (à partir de la page officielle https://help.github.com/articles/generating-ssh-keys/ )

 ssh-agent -s ssh-add ~/.ssh/id_rsa 

Après cela, tout fonctionne bien, git peut voir la clé correcte, avant de ne pas le faire.

Tout d’abord, nous devons rechercher les clés ssh existantes sur votre ordinateur. Ouvrez le terminal et lancez:

 ls -al ~/.ssh #or cd ~/.ssh ls 

et cela va lister les fichiers dans votre répertoire .ssh

Et enfin selon ce que vous voyez (dans mon cas):

  github_rsa github_rsa.pub known_hosts 

Essayez simplement de configurer votre RSA et, espérons-le, cela résoudra vos problèmes de “git push origin”

$ ssh-keygen -lf ~/.ssh/github_rsa.pub

REMARQUE: les certificates RSA sont associés à des clés afin que vous ayez un certificate privé et un certificate public, privé ne sera pas accessible car il appartient à github (dans ce cas), mais le public est celui qui pourrait vous manquer lorsque cette erreur se produit (du moins, c’était mon cas, mon compte github ou repo a été en quelque sorte foiré et je devais “lier” la clé publique, précédemment générée)

En supposant que vous connectiez GitHub sur SSH, vous pouvez exécuter la commande ci-dessous pour le confirmer.

 $git config --get remote.origin.url 

Si vous obtenez un résultat au format suivant git@github.com: xxx / xxx.github.com.git, vous devez alors procéder comme suit.

Générez une clé SSH (ou utilisez une clé existante). si vous en aviez un, il vous suffit d’append votre clé à l’agent ssh (étape 2) et à votre compte GitHub (étape 3).

ci-dessous sont pour ceux qui n’ont pas de clé SSH.

Étape 1 Génération d’une paire de clés rsa publique / privée.

 $ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 

Il vous sera demandé de confirmer où enregistrer la clé SSH et quelle phrase secrète vous souhaitez utiliser.

Étape 2 Ajoutez votre clé à l’agent ssh

  • Assurez-vous que ssh-agent est activé

    $eval "$(ssh-agent -s)"

  • Ajoutez votre clé SSH à l’agent ssh:

    $ssh-add ~/.ssh/id_rsa

Étape 3 Ajoutez votre clé SSH à votre compte

$sudo apt-get install xclip

$xclip -sel clip < ~/.ssh/id_rsa.pub

Puis ajoutez la clé copiée à GitHub

Allez dans Paramètres -> Clés SSH (barre latérale des parameters personnels) -> Ajouter une clé SSH -> remplir le formulaire (la clé est dans votre presse-papiers, utilisez simplement Ctrl + V) -> Ajouter une clé

Après avoir franchi les étapes ci-dessus, vous devez résoudre le problème de permission.

Lien de référence: Génération de clés SSH .

Je recevais cette erreur. Il s’avère que je venais de mettre à niveau OSX vers Sierra et que mon ancienne clé n’était plus enregistrée.

Au début, je pensais que c’était “Mettre à niveau vers MacOS Sierra va casser vos clés SSH et vous bloquer de vos propres serveurs”

Mais j’avais contourné celui-là. Il s’avère que je devais simplement réenregistrer ma clé existante:

ssh-add -K

Et tapez la phrase secrète … done!

Assurez-vous que ssh-add -l affiche une empreinte d’une clé SSH présente dans la liste des clés SSH de votre compte Github.

Si la sortie est vide, mais que vous savez que vous avez une clé SSH privée compatible avec votre compte github, exécutez ssh-add sur cette clé (trouvée dans ~/.ssh . Elle est nommée par défaut id_rsa , donc vous exécuterez probablement ssh-add id_rsa ).

Sinon, suivez ces instructions pour générer une paire de clés SSH.

Si vous n’accédez pas à votre propre référentiel, ou si vous clonez à l’intérieur d’un référentiel cloné (en utilisant des commandes “git submodule …”):

Dans le répertoire de base de votre référentiel:

 $ ls -a 

1. Ouvrez “.gitmodules” et vous trouverez quelque chose comme ceci:

 [submodule "XXX"] path = XXX url = git@github.com:YYY/XXX.git 

Changez la dernière ligne pour être le HTTPS du référentiel à extraire:

 [submodule "XXX"] path = XXX https://github.com/YYY/XXX.git 

Enregistrez “.gitmodules” et exécutez la commande pour les sous-modules, et “.git” sera mis à jour.

2. Ouvrez “.git”, allez dans le fichier “config” et vous trouverez quelque chose comme ceci:

 [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true ignorecase = true precomposeunicode = true [remote "origin"] url = https://github.com/YYY/XXX.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master [submodule "XXX"] url = git@github.com:YYY/XXX.git 

Changez la dernière ligne pour être le HTTPS du référentiel à extraire:

  url = https://github.com/YYY/XXX.git 

Donc, dans ce cas, le principal problème est simplement lié à l’URL. HTTPS de n’importe quel repository peut être trouvé maintenant en haut de la page du référentiel.

J’utilisais github plus tôt pour l’un de mes projets PHP. En utilisant github, j’utilisais ssh au lieu de https. J’avais ma machine configurée comme ça et chaque fois que je commettais et que je poussais le code, cela me demandait le mot de passe de ma clé rsa.

Après quelques jours, j’ai arrêté de travailler sur le projet php et j’ai oublié mon mot de passe rsa. Récemment, j’ai commencé à travailler sur un projet Java et je suis passé à Bitbucket. Étant donné que j’avais oublié le mot de passe et qu’il n’y avait aucun moyen de le récupérer , j’ai décidé d’utiliser le protocole https (recommandé) pour le nouveau projet et j’ai reçu la même erreur que celle posée dans la question.

Comment je l’ai résolu?

  1. A couru cette commande pour dire à mon git d’utiliser https au lieu de ssh:

     git config --global url."https://".insteadOf git:// 
  2. Retirez toute télécommande si elle existe

     git remote rm origin 
  3. Refaire tout, de git init à git push et ça marche!

PS: J’ai également désinstallé ssh de ma machine pendant le processus de débogage en pensant que sa suppression résoudrait le problème. Oui je sais!! 🙂

Je pense que j’ai la meilleure réponse pour vous, vos applications git lisent votre id_rsa.pub dans le répertoire utilisateur root

 /home/root/.ssh/id_rsa.pub 

C’est pourquoi votre clé dans /home/your_username/.ssh/id_rsa.pub ne peut pas être lue par git. Donc, vous devez créer la clé dans /home/root/.ssh/

 $ sudo su $ ssh-keygen $ cd ~/.ssh $ cat id_rsa.pub 

Copiez ensuite la clé dans votre compte github. Cela a fonctionné pour moi. Tu peux l’essayer.

Une autre solution :

créez les clés SSH, tapez ssh-keygen -t rsa -C "your_email@example.com" . Cela créera les fichiers id_rsa et id_rsa.pub.

Ajoutez la liste id_rsa à ssh sur l’ordinateur local: ssh-add ~/.ssh/id_rsa.

Après avoir généré les clés, obtenez la pub en utilisant:

 cat ~/.ssh/id_rsa.pub 

vous obtiendrez quelque chose comme:

 cat ~/.ssh/id_rsa.pub ssh-rsa AAAB3NzaC1yc2EAAAADAQABAAACAQCvMzmFEUPvaA1AFEBH6zGIF3N6pVE2SJv9V1MHgEwk4C7xovdk7Lr4LDoqEcqxgeJftwWQWWVrWWf7q9qCdHTAanH2Q5vx5nZjLB+B7saksehVOPWDR/MOSpVcr5bwIjf8dc8u5S8h24uBlguGkX+4lFJ+zwhiuwJlhykMvs5py1gD2hy+hvOs1Y17JPWhVVesGV3tlmtbfVolEiv9KShgkk3Hq56fyl+QmPzX1jya4TIC3k55FTzwRWBd+IpblbrGlrIBS6hvpHQpgUs47nSHLEHTn0Xmn6Q== user@email.com 

copiez cette clé (valeur) et allez sur github.com et sous le paramètre (clé ssh et pgp) ajoutez votre clé publique.

J’aimerais append certaines de mes conclusions:

Si vous utilisez GitBash , assurez-vous que la clé SSH est stockée dans ~/.ssh/id_rsa .

Par défaut, GitBash recherche ~/.ssh/id_rsa comme chemin par défaut pour la clé SSH.

Même le nom de fichier id_rsa compte. Si vous enregistrez votre clé SSH dans un autre nom de fichier ou un autre chemin, l’erreur sera Permission Denied(publickey) .

cela a fonctionné pour moi:

1- supprimer toutes les origines

 git remote rm origin 

(cf. https://www.kernel.org/pub/software/scm/git/docs/git-remote.html )

* remote: “Gérez l’ensemble des repositorys (” remotes “) dont vous suivez les twigs.

* rm: “Supprimez la télécommande nommée. Toutes les twigs de suivi à distance et les parameters de configuration de la télécommande sont supprimés.”

2- cocher tout a été supprimé:

 git remote -v 

3- append un nouveau maître d’origine

 git remote add origin git@github.com:YOUR-GIT/YOUR-REPO.git 

c’est tout!

J’ai eu le même problème récemment. Cela peut aider si vous avez besoin d’un correctif immédiatement, mais cela doit être fait chaque fois que vous redémarrez votre système

A partir du terminal, exécutez: ssh-add ~/.ssh/id_rsa

Entrez votre mot de passe du système et cela devrait fonctionner.

Si vous avez déjà créé une clé SSH et que vous obtenez toujours l’erreur, c’est parce que vous devez donner à l’utilisateur des permissions pour lire et écrire dans le dossier dans lequel vous clonez. Pour ce faire, sudo chmod 777 " . Bien sûr, c’est après avoir généré une clé SSH et que vous obtenez toujours cette erreur. J’espère que cela aidera les futurs utilisateurs.

modifier

Pour append à cette utilisation admin dans Windows si vous utilisez le git bash

Si vous utilisez l’interface utilisateur GitHub pour Mac, vérifiez les préférences pour vous assurer que vous êtes connecté.

Je recevais la même erreur lors de ‘git push’. Côté client, j’avais deux origines et ma maîsortingse. J’en ai enlevé un, puis ça a bien fonctionné.

vous pouvez utiliser l’URL http pour vous connecter

Je suppose que vous essayez de vous connecter avec l’URL ssh lorsque vous dites git push si vous demandez uniquement un mot de passe lorsque vous vous connectez via ssh.better, vous utilisez http url.

Aussi dans Ubuntu, même si la clé SSH était déjà entrée dans les parameters de BitBucket, j’ai ce problème. La raison était que j’essayais ce qui suit:

 sudo git push origin master 

Pas sûr pourquoi, mais il a été résolu en utilisant

 git push origin master 

Pas de sudo utilisé.

Une fois que cela s’est produit, c’est lorsque vous suivez les instructions GitHub après avoir créé votre référentiel. Git vous demandera d’append votre télécommande avec quelque chose comme ça.

git remote add origin git@github.com:/.git

Remplacez ce qui est dans <> par les valeurs liées à votre compte.

La solution consiste à supprimer le suffixe .git . Ajoutez la télécommande comme suit:

git remote add origin git@github.com:/

tl; dr

dans ~/.ssh/config put

 PubkeyAcceptedKeyTypes=+ssh-dss 

Scénario Si vous utilisez une version de openSSH> 7, comme disons sur une barre de touche MacBook Pro, c’est ssh -V
OpenSSH_7.4p1, LibreSSL 2.5.0
ssh -V
OpenSSH_7.4p1, LibreSSL 2.5.0

Vous aviez également un ancien Mac qui avait à l’origine votre clé sur Github, il est possible que cela utilise une clé id_dsa. OpenSSH v7 ne met pas par défaut l’utilisation de ces clés DSA (qui incluent ce ssh-dss ), mais vous pouvez toujours l’append en mettant le code suivant dans votre ~/.ssh/config

 PubkeyAcceptedKeyTypes=+ssh-dss 

La source qui a fonctionné pour moi est cette newsletter Gentoo

Maintenant, vous pouvez au moins utiliser GitHub, puis fixer vos clés sur RSA.

Peut-être que votre agent ssh n’est pas activé Vous pouvez l’essayer

  1. Télécharger git

http://git-scm.com/

  1. Installez-le

  2. Activer ssh-agent

C: \ Program Files \ Git \ cmd

start-ssh-agent

Pour moi j’ai essayé ceci –

 eval "$(ssh-agent -s)" 

alors je cours

 ssh-add ~/.ssh/path-to-the-keyfile 

et pour générer la clé, vous pouvez exécuter

 ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 

Cela va générer la paire de clés (publique et privée).

vous pouvez stocker cette clé dans github pour en savoir plus. Ajouter une nouvelle clé SSH à votre compte GitHub

J’espère que ça va aider les autres 🙂

Accédez au tableau de bord de votre compte GitHub, recherchez votre référentiel de projet, cliquez sur l’onglet Paramètres – sous Déployer les clés, vous devrez append votre clé SSH. Terminal ouvert et tapez:

 cat ~/.ssh/id_rsa.pub | pbcopy 

Cela copiera la clé de votre fichier id_rsa.pub. Retournez donc au tableau de bord GitHub, collez-le, cliquez sur Ajouter une clé et voilà.

La même solution s’applique aux comptes Bitbucket.

J’avais un problème similaire à @Batman. Cependant, comme je l’exécutais sous / usr / local / src / projectname, exécuter sans sudo n’était pas une option.

Ajoutez simplement l’ indicateur -E pour préserver l’environnement (votre chemin ~ / .ssh /).

$ sudo -E git clone git@your_repo

De l’homme sudo:

-E, –preserve-env Indique à la politique de sécurité que l’utilisateur souhaite préserver ses variables d’environnement existantes. La politique de sécurité peut renvoyer une erreur si l’utilisateur n’est pas autorisé à préserver l’environnement.

J’ai eu 2 fichiers d’identité Github chargés dans l’agent ssh. Ma clé personnelle et une autre pour un projet client.

J’ai enlevé la clé qui causait la confusion:

ssh-add -d id_rsa_github_somekey

Utilisez l’URL de cette page lorsque vous ajoutez GitHub en tant que télécommande. il ne causera pas une telle erreur et pousse le code

En utilisant Https c’est bien, lancez git config --global credential.helper wincred pour créer un assistant d’identification Github qui stocke vos informations d’identification pour vous. Si cela ne fonctionne pas, vous devez alors modifier votre fichier de config dans votre répertoire .git et mettre à jour l’origine sur l’URL https.

Voir ce lien pour les documents github.