Back

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

'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:

  1. Gehen Sie zu den GitHub SSH-Einstellungen
  2. Klicken Sie auf „New SSH key”
  3. 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

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

OpenReplay