it-swarm.com.de

Gits berühmtes "ERROR: Erlaubnis zu .git dem Benutzer verweigert"

Ich habe Googeln ausprobiert und durch http://help.github.com/troblem-ssh/ und verschiedene verschiedene Anleitungen gelesen. Ich kann nicht git Push -u Origin master oder git Push Origin master (derselbe Befehl).

Ich habe mein Git-Konto seit mindestens 2 oder so Jahren gehabt. Ich konnte erfolgreich Repos und Push -u Origin master auf meinem Laptop erstellen, aber auf diesem Desktop habe ich Probleme.

Folgendes habe ich ausprobiert:

1. Ich habe meinen git-Benutzernamen eingerichtet

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

3. Ich habe den Inhalt meiner /home/meder/.ssh/id_rsa.pub auf die Kontoseite von github hochgeladen. Ich habe bestätigt, dass kein Leerzeichen eingefügt wurde

4. Ich habe eine ~/.ssh/config mit folgendem Inhalt 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 das eigentliche entfernte Origin hinzugefügt, ohne Tippfehler zu machen: git remote add Origin [email protected]:medero/cho.git

6. Zur Bestätigung von # 5 ist hier 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, t angehängt wurde. Mein github-Benutzername ist medero, nicht medert.

Hallo mederot! Sie haben erfolgreich authentifiziert, aber GitHub nicht Shell-Zugriff gewähren.

9. Ich bin nicht hinter einem Proxy oder einer Firewall

10. Der Schlüssel wird angeboten, hier 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 clone klicke und ein Edit, Commit und git Push mache, bekomme ich genau dasselbe.

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 das Github-Token eingerichtet:

$ git config --global github.user medero $ git config --global github.token 0123456789yourf0123456789token Legt das GitHub-Token für alle git-Instanzen im System fest

16. Ich habe bestätigt, dass mein github-Benutzername NICHT mederot ist und mein Github-Token IS auf meiner Kontoseite RICHTIG ist (validiert die ersten 2 Zeichen und die letzten 2 Zeichen).

17. Zur Bestätigung von # 16 enthält ~/.gitconfig

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

18. Ich habe ssh-key add ~/.ssh/id_rsa gemacht, wenn das überhaupt nötig ist ...



THEORIES:

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

Ich vermute auch ein paar lokale SSH-Zwischenspeicherung, denn wenn ich mv ~/.ssh/id_rsa KAKA und mv ~/.ssh/id_rsa.pub POOPOO und ssh [email protected] -v tue, authentifiziert es mich immer noch und sagt, dass es meinem /home/meder/.ssh/id_rsa dient, wenn ich es umbenannt habe? Es muss zwischengespeichert werden ?!

88
meder omuraliev

In Schritt 18 gehe ich davon aus, dass Sie ssh-add ~/.ssh/id_rsa? Wenn ja, das erklärt das:

Ich vermute auch ein paar lokale SSH-Zwischenspeicherung, denn wenn ich mv ~/.ssh/id_rsa KAKA und mv ~/.ssh/id_rsa.pub POOPOO mache und ssh [email protected] -v mache, authentifiziert es mich immer noch und sagt, es bediene mein /home/meder/.ssh/id_rsa, wenn ich es umbenannt habe ?! Es muss zwischengespeichert werden ?!

... da der ssh-agent Ihren Schlüssel zwischenspeichert.

Wenn Sie sich GitHub anschauen, gibt es ein mederot account. Bist du sicher, dass das nichts mit dir zu tun hat? GitHub sollte nicht zulassen, dass derselbe öffentliche SSH-Schlüssel zu zwei Konten hinzugefügt wird, da bei der Verwendung der [email protected]:...-URLs der Benutzer anhand des SSH-Schlüssels identifiziert wird. (Dass dies nicht erlaubt sein soll, wird bestätigt hier .)

Ich vermute also (in absteigender Reihenfolge der Wahrscheinlichkeit), dass einer der folgenden Fälle der Fall ist:

  1. Sie haben das Mederot-Konto zuvor erstellt und Ihren SSH-Schlüssel hinzugefügt.
  2. Eine andere Person hat eine Kopie Ihres öffentlichen Schlüssels erhalten und sie 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 etwa 2 oder 3 überprüfen können.

Mehr :

ssh-add -l Überprüfen Sie, ob mehr als eine identifizierte Kennung vorhanden ist Wenn ja, entfernen Sie sie mit ssh-add -d "dieser Schlüsseldatei".

33
Mark Longair

Nach ein paar Tagen googelte, stellte ich fest, dass dies die einzige Frage ist, die meiner Situation entspricht.

Ich habe das Problem aber gerade gelöst! Deshalb stelle ich meine Antwort hier, um allen anderen zu helfen, die nach diesem Problem suchen.

Folgendes habe ich getan:

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

  2. Wählen Sie "All items" in Category

  3. Suche "git"

  4. Löschen Sie jeden alten und seltsamen Artikel

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

136
Alice Chan

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

  • Wechseln Sie zu Credential Manager
  • Wechseln Sie zu Windows-Anmeldeinformationen
  • Löschen Sie die Einträge unter Generic Credentials
  • Versuchen Sie erneut, eine Verbindung herzustellen. Diesmal sollten Sie zur Eingabe des korrekten Benutzernamens und Kennworts aufgefordert werden.

 enter image description here  enter image description here

Anmeldeinformationen von git entfernen

64
FAHID

Es liegt an einem Konflikt.

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 klappen.

11
Sarvesh

Ich finde, die Lösung ist die gleiche wie bei @spyar, wobei die Keychain Access App den alten Benutzernamen speichert.

Es gibt zwei Lösungen für diese Situation:

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

Oder 

  1. Wenn Sie ssh key verwenden möchten. Sie ändern einfach Ihre Repo-URL von https

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

in 

[email protected]: Benutzername/Repo.git

Hoffe das hilft.

6
thuanle

Ich verwende einen Mac und das Problem wird durch Löschen des Github-Datensatzes aus der App für den Zugriff auf den Schlüsselbund gelöst:

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

Die obigen Schritte werden zur Vereinfachung aus @spyar kopiert.

6
Deepak Bhatta

Wenn Sie unter Mac mehrere GitHub-Anmeldungen haben und nicht mit SSH arbeiten, erzwingen Sie die korrekte Anmeldung mit:

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

Dies funktioniert auch, wenn Sie Probleme mit einem privaten Repository haben.

6
leanne

Ich habe vor kurzem dieses Problem für ein altes Repo auf meinem Computer gefunden, das mit https nach oben verschoben wurde. Die Schritte 5 und 6 haben mein Problem gelöst, indem die Remote-URL für mein Repo von der https-URL zur ssh-URL zurückgesetzt wurde

Überprüfen, ob die Fernbedienung 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 neu, 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]m: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, was dazu geführt haben könnte, dass der Push fehlgeschlagen ist, wenn die Remote-Anwendung https ist

1
PhilVarg

Ich hatte das gleiche Problem wie du. Nach langem Googeln stellte ich fest, dass mein Fehler von mehreren Benutzern verursacht wurde, die den gleichen 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 es 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 denke nicht, dass dies passieren wird.

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

1
Perth Charles

Dieser Fehler ist bei der Verwendung von Travis CI zum Bereitstellen von Inhalten aufgetreten, bei dem Änderungen an einem Repository vorgenommen wurden. 

Ich löste das Problem schließlich, indem ich das mit dem Travis-Konto verknüpfte GitHub Persönliche Zugriffstoken mit der Zugriffsberechtigung public_repo aktualisierte:

 Select <code>public_repo</code>

0
ms609

Dieses Problem wird auch verursacht durch:

Wenn Sie sich auf einem Mac/Linux befinden und 'ControlMaster' in ~/.ssh/config verwenden, werden möglicherweise einige ssh-Steuerungsmasterprozesse ausgeführt.

Um sie zu finden, starte:

ps aux | grep '\[mux\]'

Und töte die relevanten.

0
Bash

Für mich hat die von FAHID (für Windows) und LEANNE (für Mac) vorgeschlagene Lösung nur funktioniert. Danke euch beiden!

0
pixel

Ich bin auch darauf gestoßen, was für mich die Ursache dafür war, dass ich beim Klonen des Repos, an dem ich meine Änderungen vorgenommen hatte, die Klon-URL von einem Inkognito-Tab abgerufen habe, ohne mich anzumelden. Das hat aus irgendeinem Grund dazu geführt, dass git ein anderes Benutzerkonto auswählt. Wenn ich es erneut von einer ordnungsgemäß angemeldeten Seite aus versuchte, funktionierte es wie üblich für mich.

0
Blue