Gits berühmter "FEHLER: Erlaubnis zu .git dem Benutzer verweigert"

118

Ich habe versucht zu googeln und https://help.github.com/de/articles/connecting-to-github-with-ssh und verschiedene, verschiedene Anleitungen durchzulesen. Ich kann nicht git push -u origin masteroder git push origin master(der gleiche Befehl).

Ich habe mein Git-Konto seit mindestens 2 Jahren. Ich konnte erfolgreich Repos und push -u origin masterFine auf meinem Laptop erstellen, aber auf diesem Desktop habe ich Probleme.

Folgendes habe ich versucht:

1. Ich habe meinen Git-Benutzernamen eingerichtet

2. Ich habe meine Git-Benutzer-E-Mail eingerichtet

3. Ich habe den Inhalt meiner Datei /home/meder/.ssh/id_rsa.pub auf die Kontoseite von github hochgeladen. Ich habe überprüft, dass ich keine Leerzeichen eingefügt habe

4. Ich habe eine ~ / .ssh / config mit folgenden Inhalten erstellt:

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

Ich habe die .ssh auf 700, id_rsa 600 geändert

5. Ich habe den richtigen Remote-Ursprung hinzugefügt, ohne Tippfehler zu machen :git remote add origin [email protected]:medero/cho.git

6. Um # 5 zu bestätigen, hier ist meine .git / config. Das Verzeichnis ist korrekt und kein anderes Verzeichnis:

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

7. ssh [email protected] -v gibt mir eine erfolgreiche Authentifizierung

8. Eine seltsame Sache ist, dass der Benutzername, mit dem er mich begrüßt, daran tangehängt wurde. Mein Github-Benutzername ist mederonicht medert.

Hallo Mederot! Sie haben sich erfolgreich authentifiziert, aber GitHub bietet keinen Shell-Zugriff.

9. Ich bin nicht hinter einem Proxy oder einer Firewall

10. Der Schlüssel wird angeboten, hier ist die Ausgabe von -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. Hier sind die Befehle, die ich verwendet habe

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. Ich möchte keinen neuen SSH-Schlüssel erstellen.

13. Wenn ich mit ssh einen Klon git mache und einen Edit, Commit und Git Push mache, bekomme ich genau das Gleiche.

14. Hier ist der eigentliche Fehler:

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

15. Ich habe meinen Github-Benutzernamen und mein Github-Token eingerichtet:

$ git config --global github.user medero $ git config --global github.token 0123456789yourf0123456789tokenSetzt das GitHub-Token für alle Git-Instanzen auf dem System

16. Ich habe bestätigt, dass mein Github-Benutzername NICHT ist mederotund mein Github-Token gemäß meiner Kontoseite RICHTIG ist (validierte erste 2 Zeichen und letzte 2 Zeichen).

17. Um # 16 zu bestätigen, enthält ~ / .gitconfig

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

18. Ich habe es getan, ssh-key add ~/.ssh/id_rsawenn das überhaupt notwendig ist ...



Theorien:

Ich vermute, dass es etwas faul ist, denn wenn ich ssh authentifiziert bekomme, ist die Begrüßung des Benutzers mederotund nicht medero, was mein Konto ist. Könnte etwas in meinem Github-Konto möglicherweise falsch zwischengespeichert werden?

Ich vermute auch eine lokale Ssh-Caching-Verrücktheit, denn wenn ich mv ~/.ssh/id_rsa KAKAund mv ~/.ssh/id_rsa.pub POOPOOund tue ssh [email protected] -ves, authentifiziert es mich immer noch und sagt, dass es meiner /home/meder/.ssh/id_rsa dient, wenn ich es umbenenne?! Es muss zwischengespeichert werden?!

meder omuraliev
quelle
Ich verwende "Github für Windows" und hatte ein ähnliches Problem beim Wechsel zwischen zwei Github-Konten. Hier ist meine Lösung: stackoverflow.com/questions/18565876/…
Alisa

Antworten:

35

In Schritt 18 meine ich wohl ssh-add ~/.ssh/id_rsa? Wenn ja, erklärt dies Folgendes:

Ich vermute auch eine lokale ssh-Caching-Verrücktheit, denn wenn ich mv ~ / .ssh / id_rsa KAKA und mv ~ / .ssh / id_rsa.pub POOPOO und ssh [email protected] -v mache, authentifiziert es mich immer noch und sagt, dass es dient mein /home/meder/.ssh/id_rsa als ich es umbenannte?! Es muss zwischengespeichert werden?!

... da das ssh-agentIhren Schlüssel zwischenspeichert.

Wenn Sie sich GitHub ansehen, gibt es ein Mederot- Konto. Sind Sie sicher, dass dies nichts mit Ihnen zu tun hat? GitHub sollte nicht zulassen, dass zwei Konten denselben öffentlichen SSH-Schlüssel hinzugefügt werden, da bei Verwendung der [email protected]:...URLs der Benutzer anhand des SSH-Schlüssels identifiziert wird. (Dass dies nicht erlaubt sein sollte, wird hier bestätigt .)

Ich vermute also (in absteigender Reihenfolge der Wahrscheinlichkeit), dass eine der folgenden Situationen der Fall ist:

  1. Sie haben zuvor das Mederot-Konto erstellt und Ihren SSH-Schlüssel hinzugefügt.
  2. Jemand anderes hat eine Kopie Ihres öffentlichen Schlüssels erhalten und dem mederot GitHub-Konto hinzugefügt.
  3. Es gibt einen schrecklichen Fehler in GitHub.

Wenn 1 nicht der Fall ist, würde ich dies GitHub melden, damit sie ungefähr 2 oder 3 überprüfen können.

Mehr :

ssh-add -l prüft, ob mehr als eine Identifikation vorhanden ist, wenn ja, entferne sie durch ssh-add -d "diese Schlüsseldatei"

Mark Longair
quelle
Große Hilfe Mark! Das hat es auch für mich behoben.
Leachy Peachy
Das war's. Du hast mir große Kopfschmerzen erspart. Jetzt muss ich nur noch daran denken, ssh-add ...jedes Mal zu laufen, wenn ich meine Github / SSH-Anmeldungen wechseln möchte.
Cerin
Aus irgendeinem Grund ssh-add -d <keyfile>funktioniert nicht. (Manuelles Löschen der Dateien.) Das von Ihnen erwähnte Caching muss irgendwie manuell neu geladen werden. Wie?
not2qubit
ssh-add -d-> "Verbindung zu Ihrem Authentifizierungsagenten konnte nicht hergestellt werden."
Alex
Das ssh-addwar das, was es für mich getan hat. Vielen Dank!
Rayryeng
158

Nachdem ich einige Tage gegoogelt hatte, stellte ich fest, dass dies die einzige Frage ist, die meiner Situation ähnelt.

Ich habe das Problem jedoch gerade gelöst! Deshalb gebe ich hier meine Antwort ein, um allen anderen bei der Suche nach diesem Problem zu helfen.

Folgendes habe ich getan:

  1. Öffnen Sie "Keychain Access.app" (Sie finden es in Spotlight oder LaunchPad)

  2. Wählen Sie "Alle Elemente" in der Kategorie

  3. Suche "git"

  4. Löschen Sie jeden alten und seltsamen Gegenstand

  5. Versuchen Sie erneut zu drücken und es hat einfach funktioniert

Alice Chan
quelle
17
Daumen hoch Kumpel. Du bist ein Held.
Prinz Bansal
1
Zur Hölle, ja, endlich, nach dem Kampf mit unzähligen SSH-Schlüsseln, ist dies die Antwort, die funktioniert hat! Der Zugriff auf Mac und https scheint den Schlüsselbund zu verwenden. Verrückt.
Patrick Chu
1
Segne dich, ich habe versucht, dies für Wochen zu lösen
Jon Hendershot
1
Sieht sehr hilfreich aus, ist aber unklar, was ist old & strange. Bin ich dabei, eine Menge Sachen durcheinander zu bringen?
Geotheory
1
@geotheory Die old & strangeDinge bedeuten die alten Datumsangaben und die falsche E-Mail oder den falschen Benutzernamen. Sie können die Tabelle nach sortieren Date Modified.
Alice Chan
91

Wenn unter Windows ein Problem auftritt, entfernen Sie die Anmeldeinformationen aus dem Windows-Verlauf.

  • Gehen Sie zu Credential Manager
  • Gehen Sie zu Windows-Anmeldeinformationen
  • Löschen Sie die Einträge unter Allgemeine Anmeldeinformationen
  • Versuchen Sie erneut, eine Verbindung herzustellen. Dieses Mal sollten Sie aufgefordert werden, den richtigen Benutzernamen und das richtige Passwort einzugeben.

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Anmeldeinformationen aus git entfernen

FAHID
quelle
2
Perfekt. Ich habe 403 mit einem Konto zugegriffen, das ich nicht mehr benutze. Jetzt gelöst.
Anton Epikhin
1
Nur das Löschen der Anmeldeinformationen von github.com war für mich ausreichend
Bart De Boeck
Und dort können Sie Ihren Benutzernamen und alles ändern. Das ist der Weg.
WesternGun
22

Wenn Sie auf einem Mac mehrere GitHub-Anmeldungen haben und kein SSH verwenden, erzwingen Sie die korrekte Anmeldung mit:

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

Dies funktioniert auch, wenn Probleme beim Verschieben in ein privates Repository auftreten.

Leanne
quelle
1
Danke, das hat bei mir funktioniert. Es forderte mich zur Eingabe eines Passworts auf und ich konnte pushen, nachdem ich mein Passwort angegeben hatte. Sehr geschätzt!
Pixel
... aber das hat das Problem für mich unter Windows nicht gelöst, nur auf Mac
Pixel
... aber @Fahid Vorschlag oben, um Anmeldeinformationen unter Windows zu bereinigen half
Pixel
Du bist ein Held.
Vaibhav
Dies ist die richtige Antwort, wenn wir mehrere Github-Projekte haben, die zu verschiedenen Konten gehören
Gangadhar JANNU
14

Es ist auf einen Konflikt zurückzuführen.

Löschen Sie alle Schlüssel von ssh-agent

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

Fügen Sie den Github-SSH-Schlüssel hinzu

ssh-add   ~/.ssh/github

Es sollte jetzt funktionieren.

Sarvesh
quelle
3
auch ssh-add -Dalle Identitäten entfernt, kann nützlich sein , wenn das Mittel in einen ungültigen Zustand erhält.
Sam
6

Ich verwende einen Mac und das Problem wird durch Löschen des Github-Datensatzes aus der Schlüsselbund-Zugriffs-App behoben: Folgendes habe ich getan:

  1. Öffnen Sie "Keychain Access.app" (Sie finden es in Spotlight oder LaunchPad).
  2. Wählen Sie "Alle Elemente" in der Kategorie
  3. Suche "git"
  4. Löschen Sie alle alten und seltsamen Elemente. Versuchen Sie erneut zu pushen, und es hat einfach funktioniert

Die obigen Schritte werden zur Vereinfachung von @spyar kopiert.

Deepak Bhatta
quelle
6

Ich finde, die Lösung ist die gleiche wie bei @spyar, bei der es sich um die Keychain Access- App handelt, in der der alte Benutzername gespeichert ist.

Für diese Situation gibt es zwei Lösungen:

  1. Löschen Sie die Informationen in Keychain Access by
    • Öffnen Sie die Keychain Access App
    • Suche nach Github
    • Löschen Sie die entsprechenden Anmeldeinformationen

Oder

  1. Wenn Sie verwenden, möchten Sie ssh Schlüssel verwenden . Sie ändern einfach Ihre Repo-URL von https

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

in

[email protected]: Benutzername / repo.git

Hoffe das hilft.

Thuanle
quelle
2

Ich bin kürzlich auf dieses Problem für ein altes Repo auf meinem Computer gestoßen, das mit https hochgeschoben wurde. Die Schritte 5 und 6 haben mein Problem gelöst, indem die Remote-URL für mein Repo von der Verwendung der https-URL auf die SSH-URL zurückgesetzt wurde

Bei der Überprüfung der Fernbedienung wird die https-URL verwendet

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

Setzen Sie dann den Ursprung zurück, um die SSH-URL zu verwenden

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

Überprüfung der neuen Fernbedienung

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

konnte jetzt erfolgreich git push -u origin

Ich bin mir immer noch nicht sicher, welche Einstellung ich geändert hätte, die möglicherweise dazu geführt hat, dass der Push fehlgeschlagen ist, wenn die Fernbedienung https ist, aber dies war die Lösung für mein Problem

PhilVarg
quelle
FEHLER: Die Erlaubnis zur Unrealcv / Synthetic-Computer-Vision.git wurde Monajalal verweigert. fatal: Konnte nicht aus dem Remote-Repository lesen. Stellen Sie sicher, dass Sie über die richtigen Zugriffsrechte verfügen und das Repository vorhanden ist.
Mona Jalal
1

Ich hatte das gleiche Problem wie du. Nach einer langen Zeit beim Googeln stellte ich fest, dass mein Fehler von mehreren Benutzern verursacht wurde, die denselben Schlüssel in ihren Konten hinzugefügt hatten.

Hier ist meine Lösung: Löschen Sie den SSH-Schlüssel des falschen Benutzers (ich kann dies tun, weil der falsche Benutzer auch mein Konto ist). Wenn der falsche Benutzer nicht Ihr Konto ist, müssen Sie möglicherweise Ihren SSH-Schlüssel ändern, aber ich glaube nicht, dass dies passieren wird.

Und ich denke, Ihr Problem kann durch einen Tippfehler in Ihrem Kontonamen verursacht werden.

Perth Charles
quelle
0

Dieses Problem wird auch verursacht durch:

Wenn Sie unter einem Mac / Linux arbeiten und 'ControlMaster' in Ihrer ~ / .ssh / config verwenden, werden möglicherweise einige SSH-Steuerungsmasterprozesse ausgeführt.

Um sie zu finden, führen Sie Folgendes aus:

ps aux | grep '\[mux\]'

Und töte die relevanten.

Bash
quelle
0

Auch ich bin darauf gestoßen. Was dies für mich verursacht hat, ist, dass ich beim Klonen des Repos, auf das ich meine Änderungen verschoben habe, die Klon-URL von einem Inkognito-Tab abgerufen habe, ohne mich anzumelden. (Ich weiß immer noch nicht, wie sich das auswirkt.) Das führte aus irgendeinem Grund dazu, dass Git ein anderes Benutzerkonto auswählte. Als ich es erneut von einer ordnungsgemäß angemeldeten Seite aus versuchte, funktionierte es für mich wie gewohnt.

Rajoriav
quelle
0

Dieser Fehler trat bei der Verwendung von Travis CI zum Bereitstellen von Inhalten auf , bei dem Änderungen in ein Repository übertragen wurden.

Ich habe das Problem schließlich gelöst, indem ich das mit dem Travis-Konto verknüpfte GitHub- Token für den persönlichen Zugriff mit der public_repoBerechtigung zum Zugriff auf den Gültigkeitsbereich aktualisiert habe :

Wählen Sie <code> public_repo </ code>

ms609
quelle