web-dev-qa-db-fra.com

Le célèbre "ERREUR de Git: L'autorisation de .git refusée à l'utilisateur"

J'ai essayé de googler et de lire http://help.github.com/troubleshooting-ssh/ et divers guides. Je suis incapable de git Push -u Origin master ou git Push Origin master (la même commande).

J'ai mon compte git depuis au moins 2 ans. J'ai réussi à créer des pensions et un Push -u Origin master correct sur mon ordinateur portable, mais des problèmes se posent sur ce bureau.

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 du compte de github. J'ai vérifié que je n'avais pas collé d'espaces

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

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

J'ai chmodé le .ssh à 700, id_rsa 600

5. J'ai ajouté le proper origine distante 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 non 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 souhaite la bienvenue a été ajouté à t. Mon nom d'utilisateur github est medero, pas medert.

Salut mederot! Vous avez réussi authentifié, mais pas GitHub fournir un accès à Shell.

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

10. La clé est offerte, voici le résultat 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 git clone en utilisant ssh et 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 et mon jeton github:

$ git config --global github.user medero $ git config --global github.token 0123456789yourf0123456789tokenSets le jeton GitHub pour toutes les instances de git sur le système.

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

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

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

18. J'ai fait ssh-key add ~/.ssh/id_rsa si c'est même nécessaire ...



THÉORIES:

Je soupçonne qu'il y a quelque chose de louche, car lorsque je suis authentifié par ssh, le message d'accueil de l'utilisateur est mederot et non pas medero, ce qui est mon compte. Est-il possible que quelque chose dans mon compte github soit mal mis en cache?

Je soupçonne également des bizarreries de cache ssh locales, car si je mv ~/.ssh/id_rsa KAKA et mv ~/.ssh/id_rsa.pub POOPOO et que je fais 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?!

88
meder omuraliev

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

Je soupçonne également certains étranglements de cache ssh locaux, car si je mv ~/.ssh/id_rsa KAKA et mv ~/.ssh/id_rsa.pub POOPOO, et que je fais ssh [email protected] -v, cela m'authentifie toujours et dit mon /home/meder/.ssh/id_rsa quand je l'ai renommé?! Il doit être mis en cache?!

... puisque le ssh-agent met 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 permettre que la même clé publique SSH soit ajoutée à deux comptes, car lorsque vous utilisez les URL [email protected]:..., elle identifie l'utilisateur à l'aide de la clé SSH. (Cela ne devrait pas être permis est confirmé ici .)

Donc, je soupçonne (par ordre décroissant de probabilité) que l’un des cas suivants soit

  1. Vous avez précédemment créé le compte mederot 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érifie s'il y a plus d'une identification existante Si oui, supprimez-la par ssh-add -d "ce fichier de clé"

33
Mark Longair

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

Cependant, je viens de résoudre le problème! Je mets donc ma réponse ici pour aider tous ceux qui recherchent ce problème.

Voici ce que j'ai fait:

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

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

  3. Rechercher "git"

  4. Supprimer tous les objets anciens et étranges

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

136
Alice Chan

Si le problème se présente sous Windows, supprimez les informations d'identification de l'historique Windows.

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

 enter image description here  enter image description here

Supprimer les informations d'identification de git

64
FAHID

C'est à cause 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é github ssh

ssh-add   ~/.ssh/github

Cela devrait fonctionner maintenant.

11
Sarvesh

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

Il y a 2 solutions à cette situation:

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

Ou 

  1. Si vous utilisez voulez utiliser touche ssh. Vous venez de changer votre URL Repo à partir de https

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

dans 

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

J'espère que cela t'aides.

6
thuanle

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. Recherchez "git" 
  4. Supprimez tous les objets anciens et étranges. Essayez de pousser à nouveau et cela fonctionne

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

6
Deepak Bhatta

Sur Mac, si vous avez plusieurs connexions GitHub et que vous utilisez not en utilisant 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 accéder à un référentiel privé.

6
leanne

J'ai récemment rencontré ce problème sur un ancien dépôt sur ma machine qui avait été poussé vers le haut à l'aide de https. les étapes 5 et 6 ont résolu mon problème en réinitialisant l’URL distante de mon référentiel en utilisant l’URL https sur 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 de 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 suis toujours pas sûr du réglage que j'aurais changé et qui aurait pu faire échouer le Push lorsque la télécommande est https, mais c'était la solution à mon problème.

1
PhilVarg

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

Voici donc ma solution: supprimez la clé ssh du mauvais utilisateur (je peux le faire car le mauvais utilisateur est aussi 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 va arriver.

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

1
Perth Charles

J'ai rencontré cette erreur lors de l'utilisation de Travis CI pour deploy content , ce qui impliquait de transférer des modifications dans un référentiel. 

J'ai finalement résolu le problème en mettant à jour le jeton GitHub personal access associé au compte Travis avec l'autorisation d'accès public_repo scope:

Select <code>public_repo</code>

0
ms609

Ce problème est également causé par:

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

Pour les trouver, lancez:

ps aux | grep '\[mux\]'

Et tuez ceux qui sont pertinents.

0
Bash

Pour moi, la solution suggérée par FAHID (pour Windows) et LEANNE (pour Mac) ne fonctionnait que. Merci à vous deux!

0
pixel

Moi aussi, je me suis heurté à cela. Ce qui l’a causé, c’est que lors du clonage du référentiel sur lequel j’appuyais mes modifications, j’ai récupéré l’URL de clone dans un onglet de navigation privée sans me connecter. Cela a conduit, pour une raison quelconque, à 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.

0
Blue