web-dev-qa-db-fra.com

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 référentiel 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.
664
webwrks

GitHub ne peut pas vous authentifier. Donc, soit vous n'êtes pas configuré avec une clé SSH, parce que vous n'avez pas en configurer une sur votre machine , soit 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 de traiter avec des clés SSH. C'est méthode recommandée par GitHub .

De plus, GitHub a un page d'aide spécialement pour ce message d'erreur , et explique plus en détail tout ce que vous pouvez vérifier.

634
bdukes

Avez-vous créé un fichier config dans votre répertoire ~/.ssh? Il devrait avoir un contenu comme celui-ci:

Host github.com 
 IdentityFile ~/.ssh/github_rsa

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

et l'a chargé sur GitHub ...

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

67
IgorGanapolsky

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 .

59
cdhowie

Je connais ce problème. Après avoir ajouté la clé ssh, ajoutez votre clé ssh à l'agent ssh également (à partir de documents officiels 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é appropriée, avant de ne plus pouvoir.

57
VelikiiNehochuha

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 paramètres sont toujours corrects

git remote -v

l'URL doit être quelque chose comme ssh: //[email protected]/YourDirectory/YourProject.git; si vous ne voyez pas [email protected], utilisez

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

pour bien faire les choses. 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 paramètres de votre référentiel particulier.

49
rmundo

Premièrement, nous devons vérifier 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, c'était):

 github_rsa  github_rsa.pub known_hosts

Essayez simplement de configurer votre RSA et espérons que cela résoudra vos problèmes de "git Push Origin"

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

NOTE: Les certificats RSA sont des clés appariées. Vous aurez donc un certificat privé et un certificat public. Le certificat privé ne sera pas accessible car il appartient à github (dans ce cas) mais le public est celui que vous peut-être manquant lorsque cette erreur se produit (du moins c'était mon cas, mon compte github ou repo a été gâché d'une façon ou d'une autre et je devais "lier" la clé publique générée précédemment)

19
d1jhoni1b

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 [email protected]: xxx/xxx.github.com.git, procédez comme suit.

Générez une clé SSH (ou utilisez une clé existante). si vous en avez un, il vous suffit d’ajouter votre clé à ssh-agent (é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 "[email protected]"

Vous serez invité à confirmer l'emplacement de sauvegarde de la clé SSH et le mot de passe que 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 à ssh-agent:

    $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

Ajoutez ensuite la clé copiée à GitHub

Allez dans Paramètres -> touches SSH (barre latérale des paramètres personnels) - > Ajouter une clé SSH -> remplir le formulaire (la clé est sur votre presse-papiers, utilisez simplement ctrl + v) -> Ajouter une clé

Après avoir suivi les étapes ci-dessus, vous devez résoudre le problème des autorisations.

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

18
xinerd

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 "La mise à niveau vers macOS Sierra cassera vos clés SSH et vous isolera de vos propres serveurs"

Mais j'avais évité celui-là. Il s'avère que je viens juste de ré-enregistrer ma clé existante:

ssh-add -K

Et tapez la phrase secrète ... c'est fait!

14
jfunk

Si vous n'accédez pas à votre propre référentiel, ou clonez à l'intérieur d'un référentiel cloné (à l'aide de certaines commandes "git submodule ..."):

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

$ ls -a

1. Ouvrez ".gitmodules", et vous trouverez quelque chose comme ceci:

[submodule "XXX"]
    path = XXX
    url = [email protected]:YYY/XXX.git

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

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

Enregistrer ".gitmodules", et exécuter la commande pour les sous-modules, et ".git" seront mis à jour.

2. Ouvrez ".git", allez dans le fichier "config", et vous trouverez quelque chose comme ça:

[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 = [email protected]:YYY/XXX.git

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

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

Donc, dans ce cas, le problème principal est simplement avec l’URL. Le HTTPS de n'importe quel référentiel se trouve maintenant en haut de la page du référentiel.

9
N. Osil

Assurez-vous que ssh-add -l affiche l'empreinte d'une clé SSH figurant 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 qui fonctionne avec votre compte github, exécutez ssh-add sur cette clé (trouvée dans ~/.ssh. Elle s'appelle id_rsa par défaut, donc vous lancerez probablement ssh-add id_rsa).

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

8
Rose Perrone

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ère l'ensemble des référentiels (" télécommandes ") dont vous suivez les branches.

* rm: "Supprime la télécommande nommée. Toutes les branches de suivi à distance et les paramètres de configuration de la télécommande sont supprimés."

2- vérifier que tout a été supprimé:

git remote -v  

3- ajouter un nouveau maître d'origine

git remote add Origin [email protected]:YOUR-GIT/YOUR-REPO.git

c'est tout les gens!

7
marcdahan

ne autre solution:

pour créer les clés SSH, tapez ssh-keygen -t rsa -C "[email protected]". Cela créera les fichiers id_rsa et id_rsa.pub.

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

Après avoir généré les clés, obtenez la clé publique avec:

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== [email protected]

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

7
Badr Bellaj

J'utilisais github plus tôt pour l'un de mes projets php. Lors de l'utilisation de github, j'utilisais ssh au lieu de https. J'avais mon machine configurée comme ça et chaque fois que je commettais et poussais le code, il me demandait mon mot de passe de 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. Depuis, j'avais oublié le mot de passe et il y a aucun moyen de le récupérer Je suppose, j'ai décidé d'utiliser le protocole https (recommandé) pour le nouveau projet et j'ai obtenu la même erreur que celle posée dans la question.

Comment je l'ai résolu?

  1. Exécutez cette commande pour indiquer à mon git d'utiliser https au lieu de ssh:

    git config --global url."https://".insteadOf git://
    
  2. Supprimer toute télécommande éventuelle

    git remote rm Origin
    
  3. Refaites 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 le supprimer résoudrait le problème. Oui je sais!! :)

6
3AK

Je pense avoir 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/votre_nom_utilisateur/.ssh/id_rsa.pub ne peut pas être lue par git. Vous devez donc créer la clé dans /home/root/.ssh/

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

Ensuite, copiez la clé dans votre compte github. Cela a fonctionné pour moi. Tu peux l'essayer.

5
digembok

Si vous avez déjà créé une clé SSH et obtenez toujours l'erreur, c'est parce que vous devez donner à l'utilisateur les autorisations de lecture et d'écriture dans le dossier dans lequel vous effectuez le clonage. Pour ce faire, Sudo chmod 777 <your_folder_name_here>". Bien sûr, ceci est après que vous ayez généré une clé SSH et que vous obtenez toujours cette erreur. J'espère que cela aide les futurs utilisateurs.

Éditer

Pour ajouter à cela, utilisez admin sous Windows si vous utilisez git bash

4
Kevin

Problème résolu si vous modifiez l'accès ssh en accès https au référentiel distant:

git remote set-url Origin https_link_to_repository

git Push -u Origin master
3
george mano

J'aimerais ajouter 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 de la clé SSH.

Même le nom de fichier id_rsa est important. Si vous enregistrez votre clé SSH dans un autre nom de fichier ou un autre chemin, le message Permission Denied(publickey)error sera généré.

3
vinaykumar2491

J'ai eu le même problème récemment. Cela peut aider si vous avez besoin d'une solution immédiate, mais cela doit être fait à chaque fois que vous redémarrez votre système.

Depuis le terminal, lancez: ssh-add ~/.ssh/id_rsa

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

3
user7506706

J'avais un problème similaire à @Batman. Cependant, comme j’exécutais cela sous/usr/local/src/nomprojet, exécuter sans Sudo n’était pas une option.

Il suffit d’ajouter le - drapeau E pour préconfigurer l’environnement (votre ~/.ssh/chemin).

$ Sudo -E git clone git@your_repo

De l'homme Sudo:

-E, --preserve-env Indique dans la politique de sécurité que l'utilisateur souhaite conserver ses variables d'environnement existantes. La politique de sécurité peut renvoyer une erreur si l'utilisateur ne dispose pas de l'autorisation de préserver l'environnement.

1
justin

Également dans Ubuntu, même s’il y avait déjà une clé SSH entrée dans les paramètres de BitBucket, j’ai eu ce problème. La raison était, j'essayais ce qui suit:

Sudo git Push Origin master

Je ne sais pas pourquoi, mais cela a été résolu en utilisant

git Push Origin master

Pas de Sudo utilisé.

1
Nabin

Une fois que cela se produira, vous devrez suivre les instructions de GitHub après avoir créé votre référentiel. Git vous demandera d'ajouter votre télécommande avec quelque chose comme ça.

git remote add Origin [email protected]:<user>/<project>.git

Remplacez le contenu de <> 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 [email protected]:<user>/<project>

1
Litehouse

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

1
juliarm

vous pouvez utiliser l'URL Https pour vous connecter

je suppose que vous essayez de vous connecter avec l'URL ssh lorsque vous dites git Push si vous ne demandez que le mot de passe, considérez que vous vous connectez via ssh.better vous utilisez http url.

1
venkat razesh

tl; dr

dans ~/.ssh/config put

PubkeyAcceptedKeyTypes=+ssh-dss

Scénario Si vous utilisez une version d'openSSH> 7, comme sur un MacBook Pro à barre tactile, il s'agit de ssh -V
OpenSSH_7.4p1, LibreSSL 2.5.0

Vous avez également eu un ancien Mac sur lequel Github avait initialement placé votre clé. Il est possible qu’une clé id_dsa soit utilisée. OpenSSH v7 n'utilise pas par défaut l'utilisation de ces clés DSA (qui incluent ce ssh-dss), mais vous pouvez toujours le rajouter en ajoutant le code suivant dans votre ~/.ssh/config

PubkeyAcceptedKeyTypes=+ssh-dss

La source qui a fonctionné pour moi est la suivante Newsletter Gentoo

Maintenant, vous pouvez au moins utiliser GitHub et ensuite fixer vos clés à RSA.

1
pjammer

OK, il y a peu de solutions à celle-ci, certaines d'entre elles ont peut-être déjà été mentionnées, mais juste pour les garder ensemble:

  • assurez-vous que vos clés sont présentes, par défaut un autre dossier ~/.ssh /, c’est-à-dire id.rsa et id.rsa.pub

  • assurez-vous que les clés disposent des autorisations appropriées, vous pouvez exécuter chmod:

    chmod 600 ~/.ssh/id_rsa

    chmod 644 ~/.ssh/id_rsa.pub

  • assurez-vous que le contenu de votre clé publique (id_rsa.pub) correspond à celui chargé dans la configuration du référentiel distant

  • Enfin, corrigez les problèmes avec l'agent ssh: ssh-add

Quelques informations supplémentaires: https://itcodehub.blogspot.com/2015/01/ssh-add-problems-with-ssh-agent-and.html

1
xproph

Je recevais la même erreur lors de 'git Push'. Du côté du client, j'avais deux origines et un maître. J'ai enlevé un, puis ça a bien fonctionné.

1
Pabitra Dash

Allez dans le tableau de bord de votre compte GitHub, trouvez le référentiel de votre projet, cliquez sur Paramètres onglet - sous Déployer les clés vous devrez ajouter votre clé SSH. Ouvrez le terminal et tapez:

cat ~/.ssh/id_rsa.pub | pbcopy 

Cela copiera la clé de votre fichier id_rsa.pub. Il suffit donc de revenir au tableau de bord GitHub, de le coller, de cliquer Ajouter une clé et le tour est joué.

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

0
ajlaracast

Utiliser Https c'est bien, exécutez 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, alors vous devez éditer votre fichier config dans votre répertoire .git et mettre à jour l’origine à l’URL https.

Voir ce lien pour la documentation github.

0
Ryan Walker

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 "[email protected]"

cela générera 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 :)

0
Joomler

J'avais 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 était source de confusion:

ssh-add -d id_rsa_github_somekey

0
Alex Aguilar

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

0
徐啟倫

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

0
user9283073

J'ai trouvé cette page en cherchant une solution à un message d'erreur similaire utilisant git pull sur un hôte distant:

$ git pull
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

J'étais connecté de mon ordinateur local à l'hôte distant via ssh -AY remote_hostname. Ce n'est pas une solution à la question de OP, mais utile pour les autres personnes qui tombent sur cette page, alors publiez-la ici.

Notez que dans mon cas, git pull fonctionne correctement sur mon ordinateur local (c’est-à-dire que la clé ssh a été configurée et ajoutée au compte GitHub, etc.). J'ai résolu mon problème en ajoutant ceci à ~/.ssh/config sur mon ordinateur portable:

Host *
     ForwardAgent yes

Je me suis ensuite reconnecté à l'hôte distant avec ssh -AY remote_hostname et git pull fonctionnait maintenant. La modification de la configuration permet de transférer ma paire de clés ssh de mon ordinateur local à n’importe quel hôte. L'option -A de ssh le transmet effectivement dans cette session SSH. Voir plus de détails ici.

0
Timur Shtatland