git / Anleitungen

Git SSH: Permission denied (publickey) beheben

Dieser Fehler bedeutet, dass der SSH-Server die Anmeldung abgelehnt hat. Die Beispiele gelten für github.com; andere Anbieter und Unternehmenshosts können andere Einstellungen benötigen.

Die Beispiele verwenden Bash; beachte die Referenzen für Einzelheiten deiner Umgebung.

git — Spickzettel

Remote und Protokoll prüfen

Führe den Befehl im Repository aus. Ein HTTPS-Remote verwendet HTTPS-Zugangsdaten; eine korrigierte SSH-Konfiguration ändert diese Verbindung nicht. Eine GitHub-SSH-URL beginnt üblicherweise mit git@github.com:.

git remote -v

Für github.com heißt der SSH-Benutzer git, nicht wie dein Konto. Prüfe Eigentümer und Repository-Namen vor Änderungen am Remote. Ein Protokollwechsel kann die ursprüngliche Ursache verdecken.

Schlüssel im Agent prüfen

Liste die Identitäten deines aktuellen SSH-Agent auf. Keine geladenen Identitäten sind ein anderer Zustand als ein nicht erreichbarer Agent. Seine Einrichtung hängt von Betriebssystem und Terminal ab.

ssh-add -l

Ist dein vorhandener Schlüssel nicht geladen, füge seinen tatsächlichen Pfad hinzu, etwa ssh-add ~/.ssh/id_ed25519. Hinterlege den passenden öffentlichen .pub-Schlüssel im richtigen GitHub-Konto. Der private Schlüssel bleibt auf deinem Gerät; füge ihn nicht auf einer Website ein.

Anmeldung bei GitHub testen

Vergleiche den Fingerabdruck eines neuen Host-Schlüssels vor der Bestätigung mit den veröffentlichten GitHub-SSH-Fingerabdrücken aus der offiziellen Anleitung unten. Starte dann den Test.

ssh -T git@github.com

Die erfolgreiche GitHub-Begrüßung nennt dein Konto und erklärt, dass kein Shell-Zugang angeboten wird. Dieser erfolgreiche Test endet normalerweise mit Code 1. Bei weiteren Fehlern zeigt ssh -vT git@github.com die angebotenen Identitäten. Git mit sudo kann die Schlüssel eines anderen Benutzers verwenden.

Anmeldung und Repository-Zugriff unterscheiden

Prüfe nach einem erfolgreichen SSH-Test den Lesezugriff auf das Repository. Dieser Befehl listet Remote-Referenzen auf, ohne lokale Branches zu verändern.

git ls-remote origin

Das angemeldete Konto braucht zusätzlich Zugriff auf das Repository. Prüfe URL, Organisationsmitgliedschaft und erforderliche SSO-Freigaben. Ein Deploy Key kann auf ein Repository begrenzt sein. Wenn kein Schlüssel existiert, folge der Einrichtung des Anbieters, ohne einen vorhandenen Schlüssel zu überschreiben.

Referenzen

Alle Anleitungen