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 master
oder git push origin master
(der gleiche Befehl).
Ich habe mein Git-Konto seit mindestens 2 Jahren. Ich konnte erfolgreich Repos und push -u origin master
Fine 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 t
angehängt wurde. Mein Github-Benutzername ist medero
nicht 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 mederot
und 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_rsa
wenn das überhaupt notwendig ist ...
Theorien:
Ich vermute, dass es etwas faul ist, denn wenn ich ssh authentifiziert bekomme, ist 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 eine lokale Ssh-Caching-Verrücktheit, denn wenn ich mv ~/.ssh/id_rsa KAKA
und mv ~/.ssh/id_rsa.pub POOPOO
und tue ssh [email protected] -v
es, authentifiziert es mich immer noch und sagt, dass es meiner /home/meder/.ssh/id_rsa dient, wenn ich es umbenenne?! Es muss zwischengespeichert werden?!
Antworten:
In Schritt 18 meine ich wohl
ssh-add ~/.ssh/id_rsa
? Wenn ja, erklärt dies Folgendes:... da das
ssh-agent
Ihren 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:
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"
quelle
ssh-add ...
jedes Mal zu laufen, wenn ich meine Github / SSH-Anmeldungen wechseln möchte.ssh-add -d <keyfile>
funktioniert nicht. (Manuelles Löschen der Dateien.) Das von Ihnen erwähnte Caching muss irgendwie manuell neu geladen werden. Wie?ssh-add -d
-> "Verbindung zu Ihrem Authentifizierungsagenten konnte nicht hergestellt werden."ssh-add
war das, was es für mich getan hat. Vielen Dank!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:
Öffnen Sie "Keychain Access.app" (Sie finden es in Spotlight oder LaunchPad)
Wählen Sie "Alle Elemente" in der Kategorie
Suche "git"
Löschen Sie jeden alten und seltsamen Gegenstand
Versuchen Sie erneut zu drücken und es hat einfach funktioniert
quelle
old & strange
. Bin ich dabei, eine Menge Sachen durcheinander zu bringen?old & strange
Dinge bedeuten die alten Datumsangaben und die falsche E-Mail oder den falschen Benutzernamen. Sie können die Tabelle nach sortierenDate Modified
.Wenn unter Windows ein Problem auftritt, entfernen Sie die Anmeldeinformationen aus dem Windows-Verlauf.
Anmeldeinformationen aus git entfernen
quelle
Wenn Sie auf einem Mac mehrere GitHub-Anmeldungen haben und kein SSH verwenden, erzwingen Sie die korrekte Anmeldung mit:
Dies funktioniert auch, wenn Probleme beim Verschieben in ein privates Repository auftreten.
quelle
Es ist auf einen Konflikt zurückzuführen.
Löschen Sie alle Schlüssel von ssh-agent
Fügen Sie den Github-SSH-Schlüssel hinzu
Es sollte jetzt funktionieren.
quelle
ssh-add -D
alle Identitäten entfernt, kann nützlich sein , wenn das Mittel in einen ungültigen Zustand erhält.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:
Die obigen Schritte werden zur Vereinfachung von @spyar kopiert.
quelle
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:
Oder
in
Hoffe das hilft.
quelle
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
Setzen Sie dann den Ursprung zurück, um die SSH-URL zu verwenden
Überprüfung der neuen Fernbedienung
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
quelle
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.
quelle
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:
Und töte die relevanten.
quelle
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.
quelle
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_repo
Berechtigung zum Zugriff auf den Gültigkeitsbereich aktualisiert habe :quelle