'Permission denied (publickey)' beim Push zu GitHub beheben

Sie erhalten die Fehlermeldung „Permission denied (publickey)” beim Versuch, zu GitHub zu pushen? Dieser Fehler bedeutet, dass GitHub Sie nicht authentifizieren kann, weil ein Problem mit dem SSH-Schlüssel vorliegt. Lassen Sie uns das schnell beheben.
Wichtigste Erkenntnisse
- Der Fehler tritt auf, wenn GitHub Ihre SSH-Verbindung nicht authentifizieren kann
- Drei Hauptursachen: fehlende SSH-Schlüssel, Schlüssel nicht zu GitHub hinzugefügt oder falsches Remote-URL-Format
- Testen Sie Ihre Verbindung mit
ssh -T git@github.com
, um zu überprüfen, ob die Lösung funktioniert - SSH-Agent und Konfigurationsdateien helfen bei der Verwaltung mehrerer Konten oder persistenter Authentifizierung
Was dieser Fehler bedeutet
Der Fehler „Permission denied (publickey)” tritt auf, wenn Git versucht, sich über SSH mit GitHub zu verbinden, die Authentifizierung jedoch fehlschlägt. Stellen Sie sich SSH-Schlüssel als spezielles Passwort vor, das Ihrem Computer ermöglicht, sicher mit GitHub zu kommunizieren.
Dieser Leitfaden behandelt die drei Hauptursachen und zeigt Ihnen genau, wie Sie jede davon beheben können.
Die drei Hauptursachen (und wie man sie behebt)
1. Keine SSH-Schlüssel auf Ihrem Computer erstellt
Schnellprüfung:
ls -la ~/.ssh
Wenn Sie „No such file or directory” sehen oder der Ordner leer ist, müssen Sie SSH-Schlüssel erstellen.
Lösung: Generieren Sie ein neues SSH-Schlüsselpaar:
ssh-keygen -t ed25519 -C "ihre-email@beispiel.de"
Drücken Sie dreimal Enter, um die Standardeinstellungen zu akzeptieren. Dies erstellt zwei Dateien:
~/.ssh/id_ed25519
(privater Schlüssel - halten Sie diesen geheim)~/.ssh/id_ed25519.pub
(öffentlicher Schlüssel - teilen Sie diesen mit GitHub)
2. Öffentlicher Schlüssel nicht zu GitHub hinzugefügt
Selbst wenn SSH-Schlüssel erstellt wurden, erkennt GitHub Sie erst, wenn Sie Ihren öffentlichen Schlüssel zu Ihrem Konto hinzufügen.
Lösung: Kopieren Sie zunächst Ihren öffentlichen Schlüssel:
cat ~/.ssh/id_ed25519.pub
Fügen Sie ihn dann zu GitHub hinzu:
- Gehen Sie zu den GitHub SSH-Einstellungen
- Klicken Sie auf „New SSH key”
- Fügen Sie Ihren Schlüssel ein und speichern Sie
3. Falsches Remote-URL-Format
GitHub-SSH-URLs müssen mit git@github.com:
beginnen - nicht mit Ihrer E-Mail-Adresse oder Ihrem Benutzernamen.
Überprüfen Sie Ihre aktuelle URL:
git remote -v
Korrektes Format:
git@github.com:benutzername/repository.git
Falsche Formate:
ihreemail@github.com:benutzername/repository.git ❌
https://github.com/benutzername/repository.git ❌ (dies ist HTTPS, nicht SSH)
Lösung: Aktualisieren Sie auf die korrekte SSH-URL:
git remote set-url origin git@github.com:benutzername/repository.git
Discover how at OpenReplay.com.
Überprüfen Sie, ob alles funktioniert
Testen Sie Ihre SSH-Verbindung zu GitHub:
ssh -T git@github.com
Sie sollten sehen:
Hi benutzername! You've successfully authenticated...
Wenn dies funktioniert, können Sie jetzt ohne den „Permission denied”-Fehler zu GitHub pushen.
Häufige Probleme bei der Fehlerbehebung
SSH-Agent läuft nicht
Wenn Ihr Schlüssel existiert, aber trotzdem nicht funktioniert, läuft der SSH-Agent möglicherweise nicht.
Lösung:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Mehrere GitHub-Konten
Die Verwaltung mehrerer Konten erfordert eine SSH-Konfigurationsdatei. Erstellen Sie ~/.ssh/config
:
Host github.com-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
Host github.com-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
Klonen Sie dann mit:
git clone git@github.com-work:firma/repository.git
Plattformspezifische Hinweise
- Windows-Benutzer: Verwenden Sie Git Bash anstelle von Command Prompt oder PowerShell
- macOS/Linux-Benutzer: Verwenden Sie das Terminal
Beide Plattformen folgen denselben oben gezeigten Befehlen.
Fazit
Der Fehler „Permission denied (publickey)” ist frustrierend, aber einfach zu beheben. In den meisten Fällen müssen Sie nur SSH-Schlüssel erstellen und den öffentlichen Schlüssel zu GitHub hinzufügen. Denken Sie daran, Ihre Verbindung mit ssh -T git@github.com
zu überprüfen, bevor Sie pushen.
Sobald alles korrekt eingerichtet ist, werden Sie diesen Fehler für dieses Repository nie wieder sehen.
Häufig gestellte Fragen (FAQs)
Obwohl technisch möglich, ist es Best Practice, separate Schlüsselpaare für jedes Konto zu erstellen. Dies verbessert die Sicherheit und erleichtert die Fehlerbehebung bei der Verwaltung verschiedener Repositories.
SSH ist nach der Konfiguration bequemer, da Sie keine Passwörter für jeden Push benötigen. HTTPS funktioniert überall, erfordert aber Authentifizierungs-Token oder Passwörter für jede Operation.
Nein. Fügen Sie Ihren Schlüssel mit ssh-add zum SSH-Agent hinzu, um die Passphrase für Ihre Sitzung zwischenzuspeichern. So müssen Sie sie nur einmal pro Sitzung eingeben.
Generieren Sie sofort ein neues Schlüsselpaar und aktualisieren Sie GitHub mit dem neuen öffentlichen Schlüssel. Entfernen Sie den kompromittierten Schlüssel aus den GitHub-Einstellungen und teilen Sie niemals private Schlüssel.
Understand every bug
Uncover frustrations, understand bugs and fix slowdowns like never before with OpenReplay — the open-source session replay tool for developers. Self-host it in minutes, and have complete control over your customer data. Check our GitHub repo and join the thousands of developers in our community.