Beheben gängiger Git-Authentifizierungsfehler mithilfe von SSH und Tokens
Authentifizierungsfehler sind für Git-Benutzer eine häufige Frustrationsquelle, insbesondere beim Klonen, Pulling oder Pushen von Code. Anhaltende Fehler, die sich oft als fatal: Authentication failed oder 403 Forbidden-Meldungen äußern, deuten darauf hin, dass Git Ihre Identität gegenüber dem Remote-Hosting-Dienst (wie GitHub, GitLab oder Bitbucket) nicht sicher überprüfen kann.
Dieser umfassende Leitfaden befasst sich mit den Kernursachen dieser Fehler. Wir werden einfache Benutzername/Passwort-Abfragen – die inzwischen weitgehend veraltet sind – hinter uns lassen und uns auf moderne, sichere Authentifizierungsmethoden konzentrieren: SSH-Schlüssel und Personal Access Tokens (PATs). Die Beherrschung dieser Techniken ist für einen zuverlässigen Entwicklungsworkflow unerlässlich und stellt sicher, dass Ihre Anmeldeinformationen sowohl sicher als auch von Ihrem Git-Anbieter korrekt erkannt werden.
1. Diagnose von Anzeichen für fehlgeschlagene Authentifizierung
Bevor eine Lösung implementiert wird, ist es entscheidend zu verstehen, warum Git fehlschlägt. Authentifizierungsfehler entstehen typischerweise aus zwei Hauptquellen: abgelaufene oder widerrufene Anmeldeinformationen oder die Verwendung des falschen Protokolls (HTTPS vs. SSH) für die gespeicherten Anmeldeinformationen.
Häufige Fehlermeldungen
- 403 Forbidden: Dies bedeutet in der Regel, dass Ihre Verbindungsanfrage erfolgreich war, aber die angegebenen Anmeldeinformationen (Passwort oder Token) nicht über die erforderlichen Berechtigungen zur Ausführung der Operation verfügen.
fatal: Authentication failed for 'https://...': Zeigt an, dass Git versucht hat, gespeicherte Anmeldeinformationen (oft über einen Credential Helper) zu verwenden, diese jedoch ungültig waren oder keine gültigen Anmeldeinformationen gefunden wurden.- Passwort-Abfrageschleife: Wenn Sie über HTTPS wiederholt zur Eingabe eines Passworts aufgefordert werden, liegt dies oft daran, dass Ihr Hosting-Anbieter Passwörter für Git-Vorgänge nicht mehr akzeptiert und stattdessen ein Personal Access Token erforderlich ist.
Bestimmung Ihres Verbindungstyps
Git authentifiziert unterschiedlich, je nach dem verwendeten Remote-URL-Schema. Überprüfen Sie die Remote-URL Ihres Repositorys:
git remote -v
| URL-Schema | Erforderliche Authentifizierungsmethode |
|---|---|
https://github.com/user/repo.git |
Personal Access Token (PAT) über HTTPS |
[email protected]:user/repo.git |
SSH-Schlüsselpaar |
Wenn Sie SSH verwenden wollten, die Remote-URL jedoch HTTPS lautet, oder umgekehrt, müssen Sie entweder die URL ändern oder die Authentifizierungsmethode wechseln.
Um von HTTPS auf SSH umzusteigen:
git remote set-url origin [email protected]:USERNAME/REPOSITORY.git
2. Lösung 1: Einrichten der SSH-Schlüssel-Authentifizierung
SSH-Schlüssel bieten die sicherste und optimierteste Methode zur Authentifizierung bei Git-Diensten, da nach der erstmaligen Einrichtung keine weiteren Passwortabfragen erforderlich sind. Sie basieren auf einem öffentlichen/privaten Schlüsselpaar.
2.1 Überprüfen vorhandener SSH-Schlüssel
Verifizieren Sie, ob auf Ihrem Rechner bereits ein SSH-Schlüsselpaar generiert wurde:
ls -al ~/.ssh
Suchen Sie nach Dateien mit den Namen id_rsa, id_ed25519 oder ähnlichen, zusammen mit einer entsprechenden .pub-Datei (dem öffentlichen Schlüssel).
2.2 Generieren eines neuen SSH-Schlüsselpaars
Wenn kein geeigneter Schlüssel vorhanden ist, generieren Sie einen neuen. Ed25519 ist der empfohlene moderne Algorithmus, obwohl RSA 4096-Bit ebenfalls sicher ist.
# Erzeugen eines Ed25519-Schlüssels
ssh-keygen -t ed25519 -C "[email protected]"
# Folgen Sie den Eingabeaufforderungen. Es wird dringend empfohlen, eine starke Passphrase zu verwenden.
2.3 Registrieren des öffentlichen Schlüssels bei Ihrem Git-Host
Der öffentliche Schlüssel muss bei Ihrem Git-Host registriert werden (z. B. in den GitHub-Einstellungen, GitLab-Einstellungen).
- Kopieren Sie den Inhalt des öffentlichen Schlüssels in Ihre Zwischenablage:
bash cat ~/.ssh/id_ed25519.pub - Navigieren Sie zu den Einstellungen Ihres Hosting-Dienstes und suchen Sie den Bereich für SSH-Schlüssel.
- Fügen Sie den gesamten Inhalt der öffentlichen Schlüsseldatei in das Feld zur Schlüsselregistrierung ein.
2.4 Testen der SSH-Verbindung
Testen Sie nach der Registrierung die Verbindung, um sicherzustellen, dass der Host Ihren Schlüssel erkennt. Verwenden Sie den folgenden Befehl und ersetzen Sie github.com bei Bedarf:
ssh -T [email protected]
Wenn erfolgreich, erhalten Sie eine Willkommensnachricht, die Ihre Authentifizierung bestätigt, wie z. B.: Hi USERNAME! You've successfully authenticated...
Tipp: Wenn die Verbindung fehlschlägt, stellen Sie sicher, dass Ihr SSH-Agent läuft und Ihren Schlüssel geladen hat. Verwenden Sie
eval "$(ssh-agent -s)"gefolgt vonssh-add ~/.ssh/id_ed25519(oder Ihrem Schlüsselpfad).
3. Lösung 2: Verwendung von Personal Access Tokens (PATs) für HTTPS
Wenn Sie weiterhin HTTPS-Remote-URLs verwenden möchten (oder die Verwendung von SSH untersagt ist), müssen Sie anstelle Ihres Kontopassworts ein Personal Access Token (PAT) verwenden. Dies ist auf den meisten Plattformen seit 2021 eine entscheidende Anforderung.
3.1 Generieren des Personal Access Tokens
PATs werden direkt in den Sicherheitseinstellungen Ihres Git-Hosts generiert.
- Zu Einstellungen navigieren: Gehen Sie zu Ihren Profileinstellungen, normalerweise unter
Developer Settings(Entwicklereinstellungen) oderAccess Tokens(Zugriffstoken). - Neues Token generieren: Geben Sie einen beschreibenden Namen ein und legen Sie ein Ablaufdatum fest (es ist eine bewährte Vorgehensweise, ein Ablaufdatum festzulegen, z. B. 90 Tage).
- Scopes definieren: Entscheidend ist die Zuweisung der erforderlichen Berechtigungen (Scopes). Für den allgemeinen Zugriff auf Repositorys benötigen Sie normalerweise den
repo-Scope. - Token speichern: Sobald das Token generiert wurde, kopieren Sie es sofort. Es wird Ihnen nicht erneut angezeigt.
Warnung: Behandeln Sie Ihr PAT wie ein Passwort. Wenn es kompromittiert wird, gewährt es vollen Zugriff auf die von Ihnen zugewiesenen Scopes.
3.2 Verwendung des PAT
Wenn Sie einen Git-Vorgang über HTTPS durchführen, werden Sie nach Benutzername und Passwort gefragt.
| Abfrage | Wert zur Eingabe |
|---|---|
| Benutzername: | Ihr tatsächlicher Git-Benutzername |
| Passwort: | Die vollständige Personal Access Token (PAT)-Zeichenfolge |
Nach der Eingabe speichert Git dieses Token in der Regel sicher mithilfe eines Credential Helpers (siehe Abschnitt 4).
4. Verwalten von Anmeldeinformationen mit Credential Helpers
Das wiederholte Eingeben langer PATs ist unpraktisch. Die Credential Helper von Git speichern oder cachen Ihre Authentifizierungsdetails sicher, sodass Sie diese nur einmal eingeben müssen.
4.1 Konfigurieren des Standard-Credential-Helpers
Credential Helper verwalten, wie Git Ihre Authentifizierungsinformationen speichert. Die sichersten Methoden nutzen die native sichere Speicherung des Betriebssystems.
Für macOS: Verwenden Sie den Keychain Access Helper (oft standardmäßig aktiviert):
git config --global credential.helper osxkeychain
Für Windows: Verwenden Sie den Windows Credential Manager:
git config --global credential.helper manager
Für Linux: Der cache-Helper kann Anmeldeinformationen temporär speichern, aber der store-Helper speichert sie unverschlüsselt (mit Vorsicht verwenden).
# Speichert Anmeldeinformationen für 1 Stunde (3600 Sekunden) im Speicher
git config --global credential.helper 'cache --timeout=3600'
4.2 Zurücksetzen gespeicherter Anmeldeinformationen
Wenn Ihre Authentifizierungsfehler weiterhin bestehen, sind die vorhandenen gespeicherten (aber ungültigen) Anmeldeinformationen wahrscheinlich die Ursache. Sie müssen die gespeicherten Anmeldeinformationen löschen, um Git zu zwingen, Sie erneut nach dem PAT zu fragen.
Bei Verwendung der macOS Keychain:
- Öffnen Sie die Anwendung „Schlüsselbundverwaltung“ (Keychain Access).
- Suchen Sie nach
github.comoder Ihrem Git-Host. - Löschen Sie den entsprechenden Eintrag für das Internetpasswort.
Bei Verwendung des Windows Credential Manager:
- Öffnen Sie die Systemsteuerung und navigieren Sie zum Credential Manager.
- Suchen Sie unter Windows-Anmeldeinformationen nach generischen Anmeldeinformationen im Zusammenhang mit
git:https://...oder Ihrer Host-Domain. - Entfernen Sie den Eintrag.
Nach dem Löschen der alten Anmeldeinformationen wird die nächste Git-Operation (z. B. git pull) Sie auffordern, den Benutzernamen und das neue PAT einzugeben, das der Helper dann sicher speichert.
Zusammenfassung und nächste Schritte
Die Lösung hartnäckiger Git-Authentifizierungsfehler läuft darauf hinaus, sicherzustellen, dass Sie einen modernen, unterstützten Anmeldeinformationstyp (SSH-Schlüssel oder PAT) verwenden, der zu Ihrem Remote-URL-Protokoll (SSH oder HTTPS) passt.
| Wenn der Fehler weiterhin besteht... | Aktion |
|---|---|
| 403 Forbidden | Überprüfen Sie die PAT-Scopes oder die SSH-Schlüsselberechtigungen auf dem Host. |
| Wiederholte Aufforderungen (HTTPS) | Generieren Sie ein Personal Access Token (PAT) und stellen Sie sicher, dass der Credential Helper es korrekt speichert. |
| SSH-Schlüssel schlägt fehl | Bestätigen Sie, dass der öffentliche Schlüssel registriert ist und der ssh-agent läuft und mit dem privaten Schlüssel geladen ist. |
Indem Sie diese Schritte befolgen, können Sie Anmeldeinformationsfehler beseitigen und so zu einem reibungsloseren und sichereren Git-Workflow beitragen.