web-dev-qa-db-fra.com

Git poussant vers le référentiel GitHub distant en tant qu'utilisateur incorrect

J'ai un compte GitHub professionnel et un compte personnel. J'ai d'abord utilisé le projet personnel pour les projets de test, puis je suis passé à un référentiel avec l'autre compte sur le même ordinateur.

Maintenant, je voulais à nouveau créer un nouveau référentiel sur mon compte personnel, j'ai changé le user.name global et local et créé une nouvelle paire de clés ssh, entrée dans la page de configuration de GitHub. Puis je crée le répertoire

git init
git remote add Origin <url>
git Push Origin

mais ça me dit maintenant

ERREUR: autorisation à personaluser/newrepo.git refusée à 

Je n'ai aucune idée de la façon dont l'autre compte est connecté à celui-ci. .git/config ne montre aucune workusername choses liées.

Si vous utilisez Windows 10, prenez votre temps pour lire la réponse de Rajan.

66
Raz Faz

cela ressemble beaucoup à mon travail actuel mis en place. il semble que vous ayez déjà configuré votre ssh-keys séparé; vous devez donc également créer un fichier ~/.ssh/config et le renseigner avec des informations similaires à celles-ci:

Host work.github.com
    HostName github.com
    User WORK_GITHUB_USERNAME
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_work_rsa
    IdentitiesOnly yes

Host personal.github.com
    HostName github.com
    User PERSONAL_GITHUB_USERNAME 
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_personal_rsa
    IdentitiesOnly yes

Chaque propriété semble assez explicite, mais la variable IdentitiesOnly. Je ne vais pas essayer d'expliquer à quoi ça sert, mais c'est dans ma configuration actuelle et ça fonctionne bien.

Il est également intéressant de noter que le Host URL est juste un pointeur permettant de saisir les paramètres utilisateur corrects et n’a aucun effet sur l’affichage correct des fichiers dans votre URL HostName cible.

Maintenant, vous devez simplement vous assurer que votre URL Origin (ou toute remote en général) correspond à la bonne URL Host dans vos dépôts respectifs en fonction de votre nom d'utilisateur. Si vous avez déjà des pensions personnelles existantes, vous pouvez modifier le fichier .git/config de cette pension dans votre éditeur de texte:

[remote "Origin"]
    fetch = +refs/heads/*:refs/remotes/Origin/*
    url = [email protected]:PERSONAL_GITHUB_USERNAME/project.git

ou le faire via la ligne de commande:

git remote set-url Origin [email protected]:PERSONAL_GITHUB_USERNAME/project.git

De même pour votre travail:

[remote "Origin"]
    fetch = +refs/heads/*:refs/remotes/Origin/*
    url = [email protected]:your_work_organization/project.git

ou encore, via la ligne de commande:

git remote set-url Origin [email protected]:your_work_organization/project.git

Bien sûr, vous pouvez toujours définir une de vos URL Host dans votre fichier ~/.ssh/config comme juste

Host github.com

J'ai seulement utilisé work.github.com pour voir les relations de configuration plus facilement.

Une fois que tous ces éléments sont définis, vous devriez pouvoir appuyer sur chaque télécommande respective.

MODIFIER

Une chose à noter que je viens de découvrir moi-même, c'est que si vous définissez des valeurs globales de configuration git pour votre valeur user.email (et que je suppose que user.name enverrait également une valeur différente), git affichera vos commits en tant qu'utilisateur de messagerie. Pour contourner ce problème, vous pouvez remplacer les paramètres globaux de configuration de git dans votre référentiel local:

$ git config user.name "John Doe"
$ git config user.email [email protected]

Cela devrait maintenant envoyer les commits comme utilisateur correct pour ce dépôt.

63
hellatan

Vous pouvez également simplement basculer sur https, plutôt que sur ssh. Si vous utilisez https, les paramètres .git/config seront respectés. Donc, dans .git/config, changez:

url = [email protected]:USER/PROJECT.git

à

url = https://[email protected]/USER/PROJECT.git

(ces valeurs sont sur la page du projet git, cliquez sur les boutons SSH et HTTP pour générer les nouvelles valeurs);

34
yuttadhammo

github vous identifie par la clé ssh qu'il voit, pas par aucun paramètre de git.

Par conséquent, vous devez vous assurer que la clé ssh de votre compte professionnel ne se trouve pas dans votre trousseau lorsque vous essayez d'utiliser votre compte personnel et inversement. Utilisez ssh-add -l pour déterminer les clés présentes dans votre trousseau et ssh-add -d keyfile pour les supprimer.

En outre, vous devrez peut-être vérifier ~/.ssh/config si vous l'avez configuré pour présenter certaines clés ssh à github. Enfin, je ne sais pas comment github traite deux comptes avec la même clé publique ssh, alors assurez-vous de ne pas le faire.

33
Walter Mundt

Allez à Panneau de configuration> Comptes d'utilisateurs> Gestionnaire d'informations d'identification> Informations d'identification génériques.

supprimez les informations d'identification git. Puis lancez git Push. Cela incitera à demander les informations d'identification de git. Entrez vos informations d'identification correctes. 

29
Rajan Patil

J'ai eu le même problème récemment parce que j'ai créé un nouveau compte github. J'ai essayé les réponses ci-dessus mais cela n'a pas aidé. Ensuite, j'ai lu un article quelque part sur la suppression de github dans Keychain Access (uniquement si vous utilisez mac ). Quand je suis git Push, il demande ensuite un nom d’utilisateur et un mot de passe, et cela a fonctionné!

12
flipjs.io

J'ai eu le même problème. Il se trouve que j'avais deux comptes sur GitHub utilisant la même clé SSH et que GitHub utilisait par défaut le compte erroné qui n'était pas autorisé à effectuer le repo que je recherchais. J'ai supprimé la clé SSH du compte que je n'avais pas utilisé, mais qui a fonctionné comme prévu. 

Vous pouvez tester le compte sur lequel GitHub s'authentifie:

ssh -T [email protected]

Pour moi, cela montrait à l’origine le mauvais nom d’utilisateur, mais après avoir supprimé la clé SSH en double de ce compte, le nom d’utilisateur correct était affiché, et mon extraction et la transmission à mon dépôt fonctionnaient bien. 

10
Ryan

C'est une façon de faire: vous pouvez utiliser différentes configurations ssh pour différents comptes ssh.

Mis à jour le 22 février:

Consultez ce lien: https://Gist.github.com/2351996

6
asksw0rder

Si la modification de la clé SSH associée au compte ne fonctionne pas, modifiez le courrier électronique associé au compte.

Allez dans Github> Paramètres du compte> E-mails et vérifiez que l'adresse e-mail que vous utilisez pour valider correspond à l'e-mail du compte.

Pour voir quelle adresse électronique vous utilisez pour valider, exécutez la commande suivante: git config --global user.email. Si vous devez modifier l'adresse e-mail que vous utilisez pour la validation, exécutez git config --global user.email "[email protected]"

3
Baub

Je sais que c'est peut-être un peu tard, mais je suis resté coincé avec ça pendant un bon bout de temps et je l'ai finalement résolu comme ça:

example screenshot

  • Aller dans l'accès au trousseau (osX)

  • recherche git (assurez-vous d'avoir sélectionné tous les éléments)

  • Vous trouverez ici les informations d'identification du coupable. Supprime-les.

J'espère que cela t'aides!

3
A.Dev

J'ai le même problème. Voici ce qui se passe dans mon cas:

J'ai déjà fait git de ne pas demander mes informations d'identification chaque fois que je discute avec un référentiel distant de la manière suivante:

J'ai résolu le problème en exécutant la même commande avec "none" en remplacement de "wincred" Git config --global credential.helper none

Puis git demande à nouveau mon nom d’utilisateur/passe et tout se passe bien

2
Hung Cao

J'ai eu ce problème aussi mais aucune des autres solutions n'a fonctionné pour moi. Il s’avère que pour le travail, nous avions créé un fichier .netrc avec des entrées pour l’authentification github. La commande git a toujours utilisé le .netrc, qui contenait mon ancien nom d'utilisateur et mon ancien mot de passe. J'ai dû modifier les entrées de mon fichier .netrc pour utiliser le nouveau nom d'utilisateur et le nouveau mot de passe.

1
Steven Lambert

Jamais eu de problèmes avec git jusqu'au travail, ils ont récemment connecté nos macbooks à Active Directory et ajouté quelques comptes d’administrateur à ma machine. Cependant, après ça, ça marcherait bien jusqu'à ce que je verrouille mon écran et que je revienne. Ensuite, j'obtiendrais une vague erreur similaire à 

No user exists for uid 1927040837
fatal: Could not read from remote repository.

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

Je n'ai qu'une clé SSH sur cette machine particulière pour mon utilisateur et j'utilise zsh dans mon terme. L'email et le nom de l'utilisateur étaient corrects, alors ce n'était pas le problème. Ergo, redémarrer après chaque verrouillage de ma machine est inutile. La solution pour moi était de modifier mon fichier .zshrc et de ne pas commenter la ligne qui exporte la clé ssh (ce que je n’avais jamais eu à faire auparavant et qui utilise zsh depuis des années). 

La ligne devrait ressembler à ceci: 

# ssh
export SSH_KEY_PATH="~/.ssh/<your_rsa_id>"

Une fois que vous faites cela, lancez simplement une reset dans le terminal et tout fonctionnera bien. 

J'espère que ça aidera quelqu'un d'autre. 

1
Andruw Hart

J'ai rencontré ce problème aussi et aucune des solutions ci-dessus n'a fonctionné même après avoir supprimé ma clé ssh et en avoir créé une nouvelle. Il s'avère que ssh-agent utilisait une clé en cache, je devais donc exécuter killall ssh-agent et ensuite cela fonctionnait. 

Trouvé la solution ici. http://fzysqr.com/2012/08/28/quick-tip-wrong-ssh-key-cached-with-github-after-changing-users-and-keys/

0
hobberwickey

J'aimerais ajouter que si vous travaillez sur le compte d'un autre utilisateur, assurez-vous de vous ajouter à la zone des collaborateurs sous les paramètres du référentiel.

0
Dan Kelly

Eh bien, j'ai passé toute une matinée à essayer de faire fonctionner correctement mes deux comptes github. Je dois à la fois cloner, commettre et pousser avec les deux. Donc, ne connaissant pas toutes les fins et les aboutissants, j'ai forcé une solution qui semble bien fonctionner pour moi.

En gros, je change mon profil git et ssh pour correspondre au compte que j'utiliserai ensuite jusqu'à ce que je change à nouveau.

J'ai deux comptes maintenant sur github, dhoerl et autre chose. J'ai des fichiers séparés dans mon répertoire .ssh pour le fichier id_rsa. Je devais ssh-add -D, puis ssh-add git_dhoerl et ssh-add theOtherOne.

J'ai deux commandes Shell qui me permettent de passer d'un profil à un autre. Chacun ressemble à ceci:

cd ~/.ssh
rm id_rsa

ln git_dhoerl id_rsa

git config --global user.email "myEmailAddr"
git config --global github.user "myAccountName"        
git config --global github.token "myToken"
0
David H

J'ai trouvé une solution temporaire dans laquelle exécuter d'abord killall ssh-agent puis ajouter les clés ssh générées pour le compte que vous devez utiliser ssh-add ~/.ssh/id_4shameer

C’est l’un des moyens par lesquels nous pouvons utiliser plusieurs comptes github pour obtenir l’erreur de type ERROR: Permission to user/repo-git.git denied to username

0
mshameer