wake-up-neo.net

Git, der als falscher Benutzer auf das entfernte GitHub-Repository wechselt

Ich habe ein GitHub-Konto und ein persönliches Konto. Zuerst habe ich das persönliche für Testprojekte verwendet, dann bin ich weitergegangen und habe ein Repository mit dem anderen Konto auf demselben Computer erstellt.

Nun wollte ich wieder ein neues Repository für mein persönliches Konto erstellen, ich änderte den globalen und den lokalen user.name und erstellte ein neues ssh-Schlüsselpaar, das auf der GitHub-Setup-Seite eingegeben wurde. Dann habe ich das Verzeichnis eingerichtet

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

aber das sagt mir jetzt

FEHLER: Berechtigung für Personaluser/newrepo.git wurde verweigert 

Ich habe keine Ahnung, wie der andere Account mit diesem verbunden ist. .git/config zeigt keine workusername bezogenen Dinge.

Wenn Sie Windows 10 verwenden, nehmen Sie sich Zeit, um die Antwort des Rajan zu lesen.

66
Raz Faz

das klingt sehr ähnlich zu meinen aktuellen Arbeiten. Es scheint, dass Sie bereits einen separaten ssh-keys eingerichtet haben. Daher müssen Sie auch eine ~/.ssh/config-Datei erstellen und diese mit Informationen wie folgt füllen:

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

Jede Eigenschaft klingt ziemlich selbsterklärend, aber die IdentitiesOnly-Eigenschaft. Ich werde nicht versuchen zu erklären, wofür das dient, aber das ist in meinem aktuellen Setup und funktioniert gut.

Es ist auch erwähnenswert, dass der Host URL nur ein Zeiger ist, um die korrekten Benutzereinstellungen zu übernehmen, und hat keinen Einfluss darauf, dass die Dateien korrekt zu Ihrem Ziel HostName url gelangen.

Jetzt müssen Sie nur sicherstellen, dass Ihre Origin (oder eine remote im Allgemeinen) URL mit der korrekten Host URL in Ihren jeweiligen Repos übereinstimmt, abhängig von Ihrem Benutzernamen. Wenn Sie bereits über persönliche Repos verfügen, können Sie die .git/config-Datei dieses Repos in Ihrem Texteditor bearbeiten:

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

oder mache es über die Kommandozeile:

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

Ebenso zu Ihrer Arbeit:

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

oder noch einmal über die Befehlszeile:

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

Natürlich können Sie in Ihrer ~/.ssh/config-Datei immer nur eine Ihrer Host-URLs angeben

Host github.com

Ich habe nur work.github.com verwendet, um die Konfig-Beziehungen einfacher zu sehen.

Sobald diese eingestellt sind, sollten Sie in der Lage sein, auf die jeweilige Fernbedienung zu drücken.

BEARBEITEN

Zu beachten ist, dass ich gerade selbst herausgefunden habe, dass, wenn Sie globale git config-Werte für Ihren user.email-Wert festlegen (und ich denke, user.name würde auch einen anderen Wert senden), git Ihre Commits als E-Mail-Benutzer anzeigt. Um dies zu umgehen, können Sie die globalen git-Konfigurationseinstellungen in Ihrem lokalen Repository überschreiben:

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

Dies sollte jetzt als der richtige Benutzer für dieses Repo festgeschrieben werden.

63
hellatan

Sie können auch einfach zu https wechseln, anstatt zu ssh. Wenn Sie https verwenden, werden die Einstellungen für .git/config berücksichtigt. Ändern Sie also in .git/config Folgendes:

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

zu

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

(diese Werte befinden sich auf der git-Projektseite, klicken Sie auf die Schaltflächen SSH und HTTP, um die neuen Werte zu erhalten);

34
yuttadhammo

github identifiziert Sie anhand des angezeigten ssh-Schlüssels, nicht anhand der Einstellungen von git.

Daher müssen Sie sicherstellen, dass der ssh-Schlüssel Ihres Arbeitskontos nicht in Ihrem Schlüsselbund enthalten ist, wenn Sie versuchen, als Ihr persönliches Konto Push auszuführen, und umgekehrt. Verwenden Sie ssh-add -l, um festzustellen, welche Schlüssel sich in Ihrem Schlüsselbund befinden, und ssh-add -d keyfile, um einen Schlüssel aus Ihrem Schlüsselbund zu entfernen.

Möglicherweise müssen Sie auch ~/.ssh/config überprüfen, wenn Sie es so konfiguriert haben, dass bestimmte ssh-Schlüssel für github bereitgestellt werden. Schließlich weiß ich nicht, wie Github mit zwei Konten umgeht, die denselben öffentlichen SSH-Schlüssel haben. Stellen Sie also sicher, dass Sie das nicht tun.

33
Walter Mundt

Gehen Sie zu Systemsteuerung> Benutzerkonten> Anmeldeinformations-Manager> Allgemeine Anmeldeinformationen

entfernen Sie die Git-Anmeldeinformationen. Dann führe git Push aus. Dadurch werden Sie aufgefordert, die Anmeldeinformationen für git einzugeben. Geben Sie Ihre korrekten Zugangsdaten ein. 

29
Rajan Patil

Ich hatte das gleiche Problem vor kurzem, weil ich ein neues Github-Konto erstellt habe. Ich habe die Antworten oben ausprobiert, aber es hat nicht geholfen. Dann sah ich irgendwo einen Beitrag über das Löschen von github aus Keychain Access (nur wenn Sie mac verwenden). Wenn ich Push git, frage ich dann nach Benutzername und Passwort und es hat funktioniert!

12
flipjs.io

Ich hatte das gleiche Problem. Es stellte sich heraus, dass ich zwei Konten auf GitHub hatte, die denselben SSH-Schlüssel verwendeten, und GitHub verwendete standardmäßig das falsche Konto, das keine Berechtigung für das Repo hatte, nach dem ich danach war. Ich entfernte den SSH-Schlüssel von dem Konto, das ich nicht verwendete, und funktionierte wie erwartet. 

Sie können testen, mit welchem ​​Konto sich GitHub authentifiziert:

ssh -T [email protected]

Für mich zeigte dies ursprünglich den falschen Benutzernamen, aber nachdem ich den doppelten SSH-Schlüssel aus diesem Konto entfernt hatte, zeigte er dann den richtigen Benutzernamen und mein Pull und Push auf mein Repo funktionierten gut. 

10
Ryan

Dies ist eine Möglichkeit, dies zu tun: Sie können verschiedene ssh-Konfigurationen für verschiedene ssh-Konten verwenden.

Aktualisiert am 22. Februar:

Schauen Sie sich diesen Link an: https://Gist.github.com/2351996

6
asksw0rder

Wenn das Ändern des mit dem Konto verknüpften SSH-Schlüssels nicht funktioniert, ändern Sie die mit dem Konto verknüpfte E-Mail.

Gehen Sie zu Github> Kontoeinstellungen> E-Mails und überprüfen Sie die E-Mail-Adresse, die Sie verwenden, um die Übereinstimmung mit der E-Mail des Kontos zu bestätigen.

Führen Sie den folgenden Befehl aus, um zu sehen, welche E-Mail-Adresse Sie zum Festschreiben verwenden: git config --global user.email. Wenn Sie die E-Mail-Adresse ändern möchten, die Sie zum Festschreiben verwenden, führen Sie git config --global user.email "[email protected]" aus. 

3
Baub

Ich weiß, dass dies ein bisschen spät sein könnte, aber ich habe mich lange Zeit damit beschäftigt und es schließlich so korrigiert:

example screenshot

  • Zugang zum Schlüsselbund (osX)

  • suchgit (stellen Sie sicher, dass Sie Alle Elemente ausgewählt haben)

  • Hier finden Sie die Täterausweise. Lösche sie.

Hoffe das hilft!

3
A.Dev

Ich habe das gleiche Problem. Folgendes passiert in meinem Fall:

Ich habe vorher git gemacht, dass ich nicht jedes Mal nach meinem Berechtigungsnachweis frage, wenn ich mit dem Remote-Repository spreche: .__

Ich habe das Problem durch Ausführen des gleichen Befehls mit "none" behoben, der "wincred" Git config --global credential.helper none ersetzt

Dann frag git meinen Benutzernamen/Pass nochmal und alles läuft gut

2
Hung Cao

Ich hatte auch dieses Problem, aber keine der anderen Lösungen funktionierte für mich. Es stellte sich heraus, dass wir für die Arbeit eine .netrc-Datei erstellt hatten, die Einträge für die Authentifizierung mit github enthielt. Der git-Befehl hat immer den .netrc verwendet, der meinen alten Benutzernamen und mein Passwort enthielt. Ich musste die Einträge in meiner .netrc-Datei bearbeiten, um den neuen Benutzernamen und das neue Passwort zu verwenden.

1
Steven Lambert

Ich hatte noch nie Probleme mit git, bis sie vor kurzem bei der Arbeit unsere Macbooks mit Active Directory verbunden und meinem Computer ein paar Administratorkonten hinzugefügt haben. Aber nach diesem Idiot würde es funktionieren, bis ich meinen Bildschirm verriegelte und zurückkam. Dann würde ich einen vagen Fehler ähnlich bekommen 

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.

Ich habe nur einen ssh-Schlüssel für diesen Benutzer auf diesem Computer und verwende zsh in meinem Begriff. Die E-Mail-Adresse und der Name des Benutzers waren korrekt, sodass dies nicht das Problem war. Ergo, Neustart nach jedem Mal, wenn ich meine Maschine sperre, ist zwecklos. Die Lösung für mich bestand darin, meine .zshrc-Datei zu bearbeiten und die Zeile, in der der ssh-Schlüssel exportiert wird, zu kommentieren (was ich zuvor noch nie gemacht hatte und seit Jahren mit zsh arbeitet). 

Die Zeile sollte ungefähr so ​​aussehen: 

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

Sobald Sie dies getan haben, führen Sie einfach eine reset im Terminal aus und alles funktioniert einwandfrei. 

Ich hoffe das hilft jemand anderem. 

1
Andruw Hart

Ich bin auch auf dieses Problem gestoßen und keine der oben genannten Lösungen hat funktioniert, auch nachdem ich meinen SSH-Schlüssel gelöscht und einen neuen erstellt habe. Es stellte sich heraus, dass der ssh-agent einen zwischengespeicherten Schlüssel verwendete, also musste ich killall ssh-agent ausführen und dann funktionierte es. 

Hier die Lösung gefunden. http://fzysqr.com/2012/08/28/quick-tip-wrong-ssh-key-cached-with-github-after-changing-users-und-keys/

0
hobberwickey

Ich möchte Folgendes hinzufügen: Wenn Sie an einem anderen Benutzer-Konto arbeiten, stellen Sie sicher, dass Sie sich unter den Repository-Einstellungen im Bereich Mitbearbeiter befinden.

0
Dan Kelly

Nun, ich habe einen ganzen Morgen damit verschwendet, meine zwei Github-Accounts richtig zum Laufen zu bringen. Ich muss sowohl klonen als auch begehen und mit beiden pushen. Da ich nicht alle Enden und Außenseiten kannte, erzwang ich eine Lösung, die scheinbar gut für mich funktioniert.

Im Wesentlichen ändere ich mein git- und ssh-Profil, um dem Konto zu entsprechen, das ich dann modal verwenden werde, bis ich wieder wechsle.

Ich habe jetzt zwei Konten auf Github, dhoerl und etwas anderes. Ich habe separate Dateien in meinem .ssh-Verzeichnis für die id_rsa-Datei. Ich musste ssh-add -D, dann ssh-add git_dhoerl und ssh-add theOtherOne.

Ich habe zwei Shell-Befehle, die mich von einem Profil zu einem anderen wechseln. Jeder sieht so aus:

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

Ich habe eine temporäre Lösung gefunden, in der zuerst killall ssh-agent ausgeführt wird und dann die ssh-Schlüssel hinzugefügt, die für das Konto generiert wurden, das Sie verwenden müssen, um ssh-add ~/.ssh/id_4shameer zu verwenden.

Dies ist der eine Weg, auf dem wir mit mehreren github-Konten arbeiten können, wenn wir den Fehler vom Typ ERROR: Permission to user/repo-git.git denied to username erhalten. 

0
mshameer