La célèbre "ERREUR: Autorisation de .git refusée à l'utilisateur" de Git

119

J'ai essayé de googler et de lire https://help.github.com/en/articles/connecting-to-github-with-ssh et divers guides. Je suis incapable de git push -u origin masterou git push origin master(la même commande).

J'ai mon compte git depuis au moins 2 ans environ. J'ai réussi à créer des dépôts et push -u origin masterbien sur mon ordinateur portable, mais sur ce bureau, j'ai des problèmes.

Voici ce que j'ai essayé:

1. J'ai configuré mon nom d'utilisateur git

2. J'ai configuré mon email d'utilisateur git

3. J'ai téléchargé le contenu de mon /home/meder/.ssh/id_rsa.pub sur la page de compte de github. J'ai vérifié que je n'ai collé aucun espace

4. J'ai créé un ~ / .ssh / config avec ce contenu:

  Host github.com
  User git
  Hostname github.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa

J'ai chmodded le .ssh à 700, id_rsa 600

5. J'ai ajouté l' origine distante appropriée sans faire de fautes de frappe :git remote add origin [email protected]:medero/cho.git

6. Pour confirmer # 5, voici mon .git / config. Le répertoire est correct et pas un autre répertoire:

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = [email protected]:medero/cho.git

7. ssh [email protected] -v me donne une authentification réussie

8. Une chose étrange est que le nom d'utilisateur avec lequel il me salue a été tajouté. Mon nom d'utilisateur github est medero, non medert.

Salut Mederot! Vous vous êtes authentifié avec succès, mais GitHub ne fournit pas d'accès shell.

9. Je ne suis pas derrière un proxy ou un pare-feu

10. La clé est offerte, voici la sortie de -v:

debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /home/meder/.ssh/known_hosts:58
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /home/meder/.ssh/id_rsa
debug1: Remote: Forced command: gerve mederot
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Server accepts key: { some stuff, dont know if i should share it

debug1: Remote: Forced command: gerve mederot
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Authentication succeeded (publickey).

11. Voici les commandes que j'ai utilisées

mkdir cho
git init
touch README
git add README
git commit -m 'test'
git remote add origin [email protected]:medero/cho.git
git push -u origin master

12. Je ne souhaite pas créer de nouvelle clé SSH.

13. Si je clone git en utilisant ssh et que je fais une édition, une validation et git push, j'obtiens exactement la même chose.

14. Voici l'erreur réelle:

$ git push
ERROR: Permission to medero/cho.git denied to mederot.
fatal: The remote end hung up unexpectedly

15. J'ai configuré mon nom d'utilisateur github et mon jeton github:

$ git config --global github.user medero $ git config --global github.token 0123456789yourf0123456789token Définit le jeton GitHub pour toutes les instances git sur le système

16. J'ai confirmé que mon nom d'utilisateur github n'est PAS mederotet mon jeton github EST CORRECT par page de mon compte (validé les 2 premiers caractères et les 2 derniers caractères).

17. Pour confirmer # 16, ~ / .gitconfig contient

[github]
    token = mytoken...
    user = medero

18. Je l'ai fait ssh-key add ~/.ssh/id_rsasi c'est même nécessaire ...



THÉORIES:

Je soupçonne qu'il y a quelque chose de louche parce que lorsque je suis authentifié par ssh, le message d'accueil de l'utilisateur l'est mederotet non medero, ce qui est mon compte. Quelque chose dans mon compte github pourrait-il être mis en cache de manière incorrecte?

Je soupçonne également une certaine bizarrerie de mise en cache ssh locale parce que si je mv ~/.ssh/id_rsa KAKAet mv ~/.ssh/id_rsa.pub POOPOO, et je le fais ssh [email protected] -v, cela m'authentifie toujours et dit qu'il sert mon /home/meder/.ssh/id_rsa lorsque je l'ai renommé?! Il doit être mis en cache?!

meder omuraliev
la source
J'utilise "Github pour Windows" et j'ai eu un problème similaire lors du basculement entre deux comptes Github. Voici ma solution: stackoverflow.com/questions/18565876/…
Alisa
Si vous cherchez à pousser de 2 dépôts locaux différents vers leur
dépôt

Réponses:

35

À l'étape 18, je suppose que vous voulez dire ssh-add ~/.ssh/id_rsa? Si tel est le cas, cela explique ceci:

Je soupçonne également une certaine bizarrerie de mise en cache ssh locale car si je mv ~ / .ssh / id_rsa KAKA et mv ~ / .ssh / id_rsa.pub POOPOO, et que ssh [email protected] -v, il m'authentifie toujours et dit qu'il sert mon /home/meder/.ssh/id_rsa quand je l'ai renommé?! Il doit être mis en cache?!

... puisque le ssh-agentmet en cache votre clé.

Si vous regardez sur GitHub, il y a un compte mederot . Êtes-vous sûr que cela n'a rien à voir avec vous? GitHub ne devrait pas autoriser l'ajout de la même clé publique SSH à deux comptes, car lorsque vous utilisez les [email protected]:...URL, il identifie l'utilisateur en fonction de la clé SSH. (Le fait que cela ne devrait pas être autorisé est confirmé ici .)

Donc, je soupçonne (par ordre décroissant de probabilité) que l'un des cas suivants est le cas:

  1. Vous avez créé le compte mederot précédemment et y avez ajouté votre clé SSH.
  2. Quelqu'un d'autre a obtenu une copie de votre clé publique et l'a ajoutée au compte mederot GitHub.
  3. Il y a un horrible bug dans GitHub.

Si 1 n'est pas le cas, je le signalerais à GitHub, afin qu'ils puissent en vérifier environ 2 ou 3.

Plus :

ssh-add -l vérifier s'il y a plus d'un identifiant si oui, le supprimer par ssh-add -d "ce fichier clé"

Mark Longair
la source
Grande aide Mark! Cela a aussi résolu le problème pour moi.
Leachy Peachy
C'était ça. Vous m'avez sauvé un énorme mal de tête. Maintenant, je dois juste me souvenir de courir ssh-add ...chaque fois que je veux changer mes connexions github / ssh.
Cerin
Pour une raison quelconque, ssh-add -d <keyfile>cela ne fonctionne pas. (Suppression manuelle de ces fichiers.) La mise en cache que vous avez mentionnée doit être rechargée manuellement d'une manière ou d'une autre. Comment?
not2qubit
ssh-add -d-> "Impossible d'ouvrir une connexion à votre agent d'authentification."
alex
C'est ssh-addce qui a fait ça pour moi. Merci!
rayryeng
160

Après avoir cherché sur Google pendant quelques jours, j'ai trouvé que c'était la seule question similaire à ma situation.

Cependant, je viens de résoudre le problème! Je mets donc ma réponse ici pour aider quiconque recherche ce problème.

Voici ce que j'ai fait:

  1. Ouvrez "Keychain Access.app" (vous pouvez le trouver dans Spotlight ou LaunchPad)

  2. Sélectionnez "Tous les articles" dans la catégorie

  3. Rechercher "git"

  4. Supprimer tous les éléments anciens et étranges

  5. Essayez de pousser à nouveau et cela a juste fonctionné

Alice Chan
la source
17
Bravo mon pote. Tu es un héros.
Prince Bansal
1
Enfer oui, enfin, après avoir lutté avec d'innombrables clés SSH, c'est la réponse qui a fonctionné! Il semble que l'accès Mac et https utilise le trousseau. Fou.
Patrick Chu
1
Bénissez-vous que j'ai essayé de résoudre ce problème pendant des semaines
Jon Hendershot
1
Ça a l'air très utile, mais on ne sait pas ce que c'est old & strange. Suis-je sur le point de gâcher un tas de trucs…?
geotheory
1
@geotheory Les old & strangechoses signifient les anciens éléments de date et un e-mail ou un nom d'utilisateur incorrect. Vous pouvez trier le tableau par Date Modified.
Alice Chan du
92

Si un problème survient sur Windows, supprimez les informations d'identification de l'historique Windows.

  • Accédez à Credential Manager
  • Accédez aux informations d'identification Windows
  • Supprimer les entrées sous Informations d'identification génériques
  • Essayez de vous reconnecter. Cette fois, il devrait vous demander le nom d'utilisateur et le mot de passe corrects.

entrez la description de l'image ici entrez la description de l'image ici

supprimer les informations d'identification de git

FAHID
la source
2
Parfait. J'avais accès à 403 avec un compte que je n'utilise plus. Maintenant résolu.
Anton Epikhin
1
seule la suppression des informations d'identification github.com était suffisante pour moi
Bart De Boeck
Et là, vous pouvez changer votre nom d'utilisateur et tout. C'est le chemin.
WesternGun
En fait, cela a fonctionné pour moi aussi, mais que ferais-je si j'avais 2 comptes différents?
an4s911
22

Sur Mac, si vous avez plusieurs connexions GitHub et que vous n'utilisez pas SSH, forcez la connexion correcte en utilisant:

git remote set-url origin https://[email protected]/username/repo-name.git

Cela fonctionne également si vous rencontrez des problèmes pour pousser vers un référentiel privé.

leanne
la source
1
Merci, cela a fonctionné pour moi. Cela m'a demandé un mot de passe et j'ai pu pousser après avoir fourni mon mot de passe. Très appréciée!
pixel
... mais cela n'a pas résolu le problème pour moi sur Windows, uniquement sur Mac
pixel
... mais @Fahid suggeston ci-dessus pour nettoyer les informations d'identification sur Windows a aidé
pixel
Tu es un héros.
Vaibhav
C'est la bonne réponse si nous avons plusieurs projets github qui appartiennent à différents comptes
Gangadhar JANNU
14

C'est dû à un conflit.

Effacer toutes les clés de ssh-agent

ssh-add -d ~/.ssh/id_rsa
ssh-add -d ~/.ssh/github

Ajouter la clé ssh github

ssh-add   ~/.ssh/github

Cela devrait fonctionner maintenant.

Sarvesh
la source
3
ssh-add -Dsupprime également toutes les identités, peut être utile si l'agent entre dans un état invalide.
Sam
6

J'utilise Mac et le problème est résolu en supprimant l'enregistrement github de l'application d'accès au trousseau: voici ce que j'ai fait:

  1. Ouvrez "Keychain Access.app" (vous pouvez le trouver dans Spotlight ou LaunchPad)
  2. Sélectionnez "Tous les articles" dans la catégorie
  3. Rechercher "git"
  4. Supprimez tous les éléments anciens et étranges Essayez de pousser à nouveau et cela a juste fonctionné

Les étapes ci-dessus sont copiées à partir de @spyar pour plus de facilité.

Deepak Bhatta
la source
6

Je trouve que la solution est la même que celle fournie par @spyar, qui est l' application Keychain Access stockée l'ancien nom d'utilisateur.

Il existe 2 solutions à cette situation:

  1. Supprimez les informations dans Keychain Access en
    • Ouvrez l' application Keychain Access
    • Rechercher github
    • Supprimer les informations d'identification correspondantes

Ou

  1. Si vous utilisez voulez utiliser la clé ssh . Vous venez de changer l'URL de votre repo de https

https://github.com/username/repo.git

dans

[email protected]: nom d'utilisateur / repo.git

J'espère que cela t'aides.

Thuanle
la source
2

J'ai récemment rencontré ce problème pour un ancien repo sur ma machine qui avait été poussé à l'aide de https. les étapes 5 et 6 ont résolu mon problème en réinitialisant l'URL distante de mon dépôt en utilisant l'URL https vers l'URL ssh

vérifier que la télécommande utilise l'url https

> git remote -v
origin  https://github.com/ExampleUser/ExampleRepo.git (fetch)
origin  https://github.com/ExampleUser/ExampleRepo.git (push)

puis réinitialiser l'origine pour utiliser l'url ssh

> git remote set-url origin [email protected]:ExampleUser/ExampleRepo.git

vérification d'une nouvelle télécommande

> git remote -v
origin  [email protected]:ExampleUser/ExampleRepo.git (fetch)
origin  [email protected]:ExampleUser/ExampleRepo.git (push)

pourrait maintenant avec succès git push -u origin

Je ne sais toujours pas quel paramètre j'aurais changé qui aurait pu provoquer l'échec du push lorsque la télécommande est https mais c'était la solution à mon problème

PhilVarg
la source
ERREUR: autorisation d'irealcv / synthèse-computer-vision.git refusée à monajalal. fatal: impossible de lire à partir du référentiel distant. Veuillez vous assurer que vous disposez des droits d'accès appropriés et que le référentiel existe.
Mona Jalal le
1

J'ai eu le même problème que toi. Après une longue période de recherche sur Google, j'ai découvert que mon erreur était due à plusieurs utilisateurs qui avaient ajouté la même clé dans leurs comptes.

Alors, voici ma solution: supprimez la clé ssh du mauvais utilisateur (je peux le faire car le mauvais utilisateur est également mon compte). Si le mauvais utilisateur n'est pas votre compte, vous devrez peut-être changer votre clé ssh, mais je ne pense pas que cela se produira.

Et je pense que votre problème peut être causé par une erreur de frappe dans le nom de votre compte.

Perth Charles
la source
0

Ce problème est également causé par:

Si vous êtes sur un mac / linux et que vous utilisez 'ControlMaster' dans votre ~ / .ssh / config, il se peut que certains processus maîtres de contrôle ssh soient en cours d'exécution.

Pour les trouver, exécutez:

ps aux | grep '\[mux\]'

Et tuez les plus pertinents.

Frapper
la source
0

J'ai aussi rencontré cela, ce qui a causé cela pour moi, c'est que lors du clonage du dépôt vers lequel je poussais mes modifications, j'ai récupéré l'URL de clonage à partir d'un onglet de navigation privée sans me connecter (je ne sais toujours pas comment cela affecte). Cela a conduit pour une raison quelconque à git choisir un autre compte utilisateur. Lorsque je l'ai réessayé à partir d'une page de connexion appropriée, cela a fonctionné comme d'habitude pour moi.

Rajoriav
la source
0

J'ai rencontré cette erreur lors de l'utilisation de Travis CI pour déployer du contenu , ce qui impliquait de pousser les modifications vers un référentiel.

J'ai finalement résolu le problème en mettant à jour le jeton d'accès personnel GitHub associé au compte Travis avec l' public_repoautorisation d'accès à l' étendue:

Sélectionnez <code> public_repo </code>

ms609
la source