Anleitung

GitHub Token und Git-Authentifizierung: Personal Access Token, Git Credential Manager, Push ohne Passwort

Aktualisiert: · Skillaria.Top

Seit dem 13. August 2021 akzeptiert GitHub bei Git-Vorgängen über HTTPS kein Kontopasswort mehr. Stattdessen brauchen Sie einen GitHub-Token (Personal Access Token) oder die Anmeldung über Git Credential Manager, der den Browser öffnet und die Zugangsdaten selbst speichert. Den Token erstellen Sie unter Settings → Developer settings auf github.com, geben ihn bei git push oder git clone statt des Passworts ein, und credential.helper speichert ihn.

Warum Git das GitHub-Passwort nicht mehr akzeptiert

Wenn Sie bei git push Benutzername und Passwort von github.com eingeben und abgewiesen werden, liegt das nicht an einem Tippfehler. Seit dem 13. August 2021 hat GitHub die Anmeldung mit Passwort für Git-Vorgänge über HTTPS abgeschaltet. An die Stelle des Passworts treten ein GitHub-Token (Personal Access Token, PAT) oder die Anmeldung im Browser, die der Git Credential Manager übernimmt.

Die Fehlermeldung sieht so aus:

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/... for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/user/project.git/'

Der Grund ist einfach: Ein Kontopasswort gewährt vollen Zugriff auf alles, es lässt sich nicht auf ein einziges Repository beschränken und ist unpraktisch zu widerrufen. Ein Token dagegen wird für eine Aufgabe erstellt, hat eine Laufzeit und einen Satz von Rechten, und bei einem Leak löschen Sie ihn in einer Minute, ohne das Passwort zu ändern. GitLab und Bitbucket folgen demselben Weg, deshalb gilt das Beschriebene sinngemäß auch für sie.

Zwei Wege der Authentifizierung: HTTPS und SSH

Git kommuniziert mit einem Remote-Repository über eines von zwei Protokollen, und davon hängt ab, wie Sie sich anmelden.

ProtokollAdresse des RepositorysWomit Sie sich ausweisen
HTTPShttps://github.com/user/project.gitToken oder Git Credential Manager (Anmeldung im Browser)
SSHgit@github.com:user/project.gitSchlüsselpaar: privater Schlüssel bei Ihnen, öffentlicher in den GitHub-Einstellungen

Ein SSH-Schlüssel wird einmal eingerichtet, danach fragt Git weder nach Benutzername noch nach Passwort. Seine Erstellung und das Hinterlegen bei GitHub sind im Artikel zur Einrichtung von Git ausführlich beschrieben; hier konzentrieren wir uns auf HTTPS, weil Einsteiger dort am häufigsten nach dem Passwort gefragt werden. Welches Protokoll Ihr Repository verwendet, sehen Sie mit:

git remote -v
origin  https://github.com/user/project.git (fetch)
origin  https://github.com/user/project.git (push)

Wie Sie einen GitHub-Token (Personal Access Token) erstellen

Ein Personal Access Token ist eine lange zufällige Zeichenfolge, die GitHub Ihnen anstelle des Passworts für den programmatischen Zugriff ausstellt. Classic-Token beginnen mit ghp_, Fine-grained-Token mit github_pat_. Der Token wird nur einmal angezeigt, direkt nach der Erstellung. Kopieren Sie ihn daher in Ihren Passwort-Manager.

Schritt für Schritt

  1. Melden Sie sich auf github.com an, klicken Sie oben rechts auf Ihr Profilbild und öffnen Sie Settings.
  2. Wählen Sie unten im linken Menü Developer settings und dann Personal access tokens.
  3. Wählen Sie den Typ: Fine-grained tokens (empfohlen) oder Tokens (classic), und klicken Sie auf die Schaltfläche zum Erstellen eines neuen Tokens.
  4. Geben Sie einen verständlichen Namen (zum Beispiel „Laptop, Arbeit“), die Laufzeit und die Rechte an.
  5. Klicken Sie auf Generieren und kopieren Sie den Token sofort.

Fine-grained oder classic

Ein Fine-grained-Token ist auf bestimmte Repositorys und einzelne Rechte beschränkt. Für die normale Arbeit mit Code wählen Sie die gewünschten Repositorys und geben im Bereich der Rechte pro Repository Contents: Read and write an – das genügt für clone, pull und push. Lesen Sie nur ein privates Repository, reicht Read-only.

Ein Classic-Token gilt sofort für alle Ihre Repositorys. Für Push in ein Repository braucht man den Bereich repo, für das Ändern von Dateien in .github/workflows zusätzlich workflow. Classic ist einfacher, aber riskanter: Ein Leak öffnet den Zugang zum ganzen Konto.

Laufzeit

GitHub bietet mehrere Laufzeiten an und erlaubt ein eigenes Ablaufdatum. Einen Token ohne Ablauf kann man zwar erstellen, sollte es aber nicht: Ein vergessener unbegrenzter Token ist ein klassisches Sicherheitsloch. Sinnvoll sind 30 bis 90 Tage, und man erneuert den Token mit der Erinnerung, die GitHub vor dem Ablauf per E-Mail schickt.

Git Push und Git Clone mit Token

Den Token zu verwenden ist einfacher, als es scheint: Git fragt nach dem „Password“, und Sie fügen dort den Token statt des Passworts ein.

$ git push origin main
Username for 'https://github.com': your-login
Password for 'https://your-login@github.com': <Token einfügen>

Im Terminal werden die Zeichen des Passworts nicht angezeigt – das ist normal. Fügen Sie den Token einfach ein und drücken Sie Enter. In Git Bash unter Windows funktioniert das Einfügen über Umschalt+Einfg oder die rechte Maustaste.

Git Clone mit Token

Ein privates Repository klonen Sie genauso: git clone fragt nach Benutzername und Token. Soll es ohne Rückfragen gehen (zum Beispiel in einem Skript), können Sie den Token direkt in die Adresse schreiben:

git clone https://your-login:<TOKEN>@github.com/user/project.git

Der Nachteil: Die Adresse mit dem Token wird in .git/config gespeichert und kann in der Shell-Historie landen. Entfernen Sie den Token nach dem Klonen aus der Adresse:

git remote set-url origin https://github.com/user/project.git

In CI-Systemen übergibt man den Token über geheime Umgebungsvariablen und schreibt ihn nicht in Dateien. In GitHub Actions gibt es für das aktuelle Repository bereits den eingebauten GITHUB_TOKEN; einen eigenen PAT braucht man dort oft nicht.

GitLab: Git Clone mit Token

In GitLab erstellen Sie den Token in den Profileinstellungen im Bereich Access tokens; für die Arbeit mit Code brauchen Sie die Bereiche read_repository und write_repository. Das Schema ist dasselbe: Der Benutzername von GitLab ist der Benutzer, der Token ist das Passwort.

git clone https://oauth2:<TOKEN>@gitlab.com/group/project.git

GitLab akzeptiert den Namen oauth2 für jeden persönlichen Token; alternativ können Sie Ihren eigenen Benutzernamen angeben.

Git Pull und Fetch

Für ein öffentliches Repository funktionieren git pull und git clone ohne Anmeldung. Nach Benutzername und Token fragt Git nur bei einem privaten Repository oder bei git push. Fragt pull in einem öffentlichen Projekt doch nach dem Passwort, liegt meist ein Fehler in der Adresse vor: GitHub antwortet auf ein nicht existierendes Repository genauso wie auf ein geschlossenes.

Git Credential Manager: was ist das

Den Token bei jedem Push einzugeben ist unpraktisch. Diese Aufgabe übernimmt ein Credential Helper – ein Hilfsprogramm, das Git aufruft, wenn es Zugangsdaten braucht. Git übergibt ihm die Adresse des Servers, und das Programm liefert Benutzername und Passwort (bzw. Token) aus seinem Speicher zurück.

Der Git Credential Manager (GCM) ist der komfortabelste dieser Helfer. Es handelt sich um ein plattformübergreifendes Programm von GitHub und Microsoft: Beim ersten Push öffnet es ein Anmeldefenster oder den Browser, Sie melden sich bei GitHub an (auch mit Zwei-Faktor-Authentifizierung), und GCM holt den Token selbst und legt ihn im geschützten Speicher des Systems ab. Einen Token von Hand zu erstellen ist dann nicht nötig.

GCM unterstützt GitHub, GitLab, Bitbucket und Azure DevOps. In Git für Windows ist er standardmäßig installiert – das ist die Auswahl des Credential Helpers im Installer.

Welche credential.helper es gibt

WertWo gespeichertWann verwenden
managerGit Credential Manager: Windows-Anmeldeinformationsverwaltung, macOS-Schlüsselbund, Secret Service unter LinuxEmpfohlene Variante für Arbeitsrechner
osxkeychainmacOS-SchlüsselbundDer Standardhelfer von Git auf dem Mac
cacheIm Arbeitsspeicher, standardmäßig 15 MinutenLinux-Server, auf dem der Token nicht auf der Festplatte liegen soll
storeIm Klartext in ~/.git-credentialsNur isolierte Rechner; der Token ist für jeden lesbar, der Zugriff auf die Datei hat

Git-Authentifizierung einrichten unter Windows, macOS und Linux

Um zu sehen, welcher Helfer bereits eingerichtet ist:

git config --show-origin --get-all credential.helper

Windows

Haben Sie bei der Installation von Git die Standardeinstellungen belassen, funktioniert GCM bereits: Beim ersten Push in Git Bash, PowerShell oder VS Code öffnet sich ein Anmeldefenster für GitHub. Ist kein Helfer eingerichtet, aktivieren Sie ihn manuell:

git config --global credential.helper manager

macOS

Git auf dem Mac verwendet normalerweise bereits osxkeychain: Der einmal eingegebene Token landet im Schlüsselbund. Für die Anmeldung über den Browser installieren Sie den Git Credential Manager (zum Beispiel über Homebrew: brew install --cask git-credential-manager); er trägt sich selbst in die Einstellungen ein.

Linux

Unter Linux installiert man GCM separat (Paket .deb oder Archiv von den Releases des Projekts), führt danach die Konfiguration aus und wählt den Speicher:

git-credential-manager configure
git config --global credential.credentialStore secretservice

Auf einem Server ohne grafische Oberfläche ist ein temporärer Cache einfacher:

git config --global credential.helper 'cache --timeout=3600'

Alternative für GitHub: gh auth login

Ist die GitHub CLI installiert, führt gh auth login durch die Anmeldung im Browser, und gh auth setup-git richtet Git so ein, dass es die Zugangsdaten von gh verwendet. Das ist eine bequeme Methode, sich mit einem Befehl in Git anzumelden.

Gespeichertes Passwort oder Token zurücksetzen oder aktualisieren

Der häufigste Fall: Der Token ist abgelaufen oder Sie haben das Konto gewechselt, Git verwendet aber weiter die alten Daten und erhält Authentication failed. Dann löschen Sie den gespeicherten Eintrag – beim nächsten Push fragt Git erneut.

Universeller Befehl

Funktioniert mit jedem Helfer:

printf "protocol=https\nhost=github.com\n\n" | git credential reject

Git Reset Credentials unter Windows

Öffnen Sie die Systemsteuerung → Anmeldeinformationsverwaltung → Windows-Anmeldeinformationen, suchen Sie Einträge der Form git:https://github.com und löschen Sie sie. Dasselbe geht in der Eingabeaufforderung:

cmdkey /list | findstr git
cmdkey /delete:git:https://github.com

Verwenden Sie GCM, gibt es zusätzlich seinen eigenen Befehl zum Abmelden vom Konto: git credential-manager github logout <Benutzername>.

macOS

Öffnen Sie den Schlüsselbund, suchen Sie den Eintrag github.com vom Typ „Internetpasswort“ und löschen Sie ihn. Oder im Terminal:

git credential-osxkeychain erase
host=github.com
protocol=https

Drücken Sie nach der letzten Zeile noch einmal Enter, um die leere Zeile zu übergeben.

Linux und store

Bei store entfernen Sie die Zeile mit github.com aus ~/.git-credentials, bei cache führen Sie git credential-cache exit aus.

Authentifizierungsfehler und ihre Behebung

Support for password authentication was removed

Sie haben das Kontopasswort eingegeben. Erstellen Sie einen Token und fügen Sie ihn im Feld Password ein oder richten Sie den Git Credential Manager ein. Wiederholt sich der Fehler, ohne dass nach dem Passwort gefragt wird, ist das alte Passwort im Speicher hinterlegt – löschen Sie es wie oben beschrieben.

git push: Authentication failed

Ursachen nach Häufigkeit: Der Token ist abgelaufen; der Token wurde widerrufen; der Fine-grained-Token hat keinen Zugriff auf dieses Repository oder das Recht Contents steht nur auf Lesen; im Speicher liegen Daten eines anderen Kontos. Prüfen Sie Laufzeit und Rechte des Tokens unter Developer settings und setzen Sie die gespeicherten Zugangsdaten zurück.

remote: Permission denied (403)

Die Anmeldung war erfolgreich, Ihr Konto hat aber kein Schreibrecht auf dieses Repository. Der Eigentümer muss Sie unter Collaborators hinzufügen, oder Sie arbeiten über Ihren Fork und einen Pull Request.

Repository not found

Bei einem privaten Repository verrät GitHub nicht, ob es existiert, daher meldet es bei einem falschen Token „not found“. Prüfen Sie die Adresse mit git remote -v und die Rechte des Tokens.

Git Clone fragt jedes Mal nach dem Passwort

Der Credential Helper ist nicht eingerichtet. Aktivieren Sie manager oder osxkeychain – nach der ersten erfolgreichen Eingabe fragt Git nicht mehr nach. Eine andere Möglichkeit ist der Wechsel zu SSH.

Wie Sie Token sicher aufbewahren

  • Vergeben Sie möglichst wenige Rechte: ein Fine-grained-Token für die nötigen Repositorys statt eines Classic-Tokens mit repo.
  • Setzen Sie eine Laufzeit und erneuern Sie den Token, statt ihn endlos zu verlängern.
  • Committen Sie keine Token und fügen Sie sie nicht in Adressen von Remotes ein. Gelangt ein Token in ein öffentliches Repository, kann GitHub ihn automatisch widerrufen – betrachten Sie ihn trotzdem als kompromittiert und löschen Sie ihn selbst.
  • Verwenden Sie den Systemspeicher (GCM, Schlüsselbund) statt store.
  • Ein Token für jeden Rechner oder jede Aufgabe: So widerrufen Sie bei einem Leak nur genau diesen.

Fazit

Das GitHub-Passwort funktioniert für Git über HTTPS seit 2021 nicht mehr. Es gibt drei funktionierende Wege: Sie melden sich über den Git Credential Manager im Browser an, Sie erstellen einen GitHub-Token und geben ihn statt des Passworts ein, oder Sie wechseln zu SSH-Schlüsseln. Der Token wird unter Settings → Developer settings erstellt, der credential.helper speichert ihn, und bei der Fehlermeldung Authentication failed hilft fast immer die Erneuerung des Tokens und das Zurücksetzen der alten Zugangsdaten. Die Verbindung zu GitHub und die Arbeit mit Remote-Repositorys werden im Git-Kurs praktisch durchgearbeitet.

Häufige Fragen

Kann man einen GitHub-Token nach der Erstellung noch einmal ansehen?

Nein, GitHub zeigt den Token nur einmal an. Haben Sie ihn nicht gespeichert, löschen Sie den alten Token und erstellen Sie einen neuen.

Braucht man für git clone eines öffentlichen Repositorys einen Token?

Nein, öffentliche Repositorys lassen sich ohne Anmeldung klonen und mit git pull aktualisieren; einen Token braucht man für private Repositorys und für git push.

Was passiert, wenn der Token abläuft?

Git erhält Authentication failed. Erstellen Sie einen neuen Token (oder klicken Sie beim alten auf Regenerate), löschen Sie die gespeicherten Zugangsdaten und geben Sie beim nächsten Push den neuen Token ein.

Funktioniert der GitHub-Token mit Zwei-Faktor-Authentifizierung?

Ja, gerade bei aktivierter 2FA wird er benötigt: Er ersetzt Passwort und Bestätigungscode für Git-Vorgänge. Der Git Credential Manager erledigt die 2FA bei der Anmeldung im Browser selbst.

Wo speichert Git Benutzername und Passwort?

Git selbst speichert sie nicht – das übernimmt der Credential Helper: die Windows-Anmeldeinformationsverwaltung, der macOS-Schlüsselbund, Secret Service unter Linux oder die Datei ~/.git-credentials bei helper store.

Das Thema im Video lernen

Dieses Thema wird im Kurs „Git vom Anfänger zum versierten Entwickler“ ausführlich mit Praxis behandelt.

Zum Kurs