
Beim Ausführen von git push in einem Git-Projekt kann der folgende Fehler auftreten.
$ git push -u origin main
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/user/repo.git/'
Dieser Fehler tritt hauptsächlich auf, wenn das von GitHub erhaltene Zugriffstoken ungültig ist. Häufige Beispiele sind, wenn Sie ein Zugriffstoken von GitHub erhalten und in einer Datei (.git-credentials) gespeichert haben, aber das Zugriffstoken abgelaufen ist (die Standardeinstellung ist 3 Monate), oder wenn die Anmeldeinformationen abgelaufen sind (typischerweise etwa eine Stunde).
Im letzteren Fall sollte der folgende Befehl, wenn das Zugriffstoken selbst noch verwendbar ist, es Ihnen ermöglichen, wieder git push durchzuführen.
git config --global credential.helper 'cache --timeout=3600'
# oder
git config --global credential.helper 'store'
Im ersteren Fall müssen Sie, da das Zugriffstoken abgelaufen ist, ein neues Zugriffstoken auf GitHub erstellen.
Im Folgenden wird das Verfahren zur Erstellung eines Zugriffstokens auf GitHub vorgestellt.
Navigieren Sie zur folgenden Seite.
Gehen Sie zu “Personal access tokens” und klicken Sie auf generate new token Wählen Sie die erforderlichen Berechtigungen aus und schließen Sie die Erstellung ab. In meinem Fall klickte ich auf repo (Repository), um repositorybezogene Arbeiten einschließlich git push zu ermöglichen.


Wenn die Erstellung des Zugriffstokens abgeschlossen ist, gelangen Sie zu einer Seite wie der folgenden. Die Zeichenfolge, die mit “ghp_” beginnt, ist das Token. Kopieren Sie dies und fügen Sie es als Passwort ein, wenn während git push zu GitHub nach einem Passwort gefragt wird, anstelle Ihres GitHub-Passworts.

Ohne Konfiguration müssen Sie bei jedem git push das Passwort (Zugriffstoken) eingeben. Dies reduziert die Arbeitseffizienz, daher cachen oder speichern Sie das Zugriffstoken für eine bestimmte Zeit wie folgt in einer Datei.
- Die erstere Cache-Methode ist sicherer, aber die letztere Dateispeichermethode ist unsicherer. Konkret könnten beispielsweise böswillige Node.js npm-Module/Bibliotheken auf das Zugriffstoken zugreifen können.
Um im Cache zu speichern:
Im folgenden Befehlsbeispiel ist das Timeout auf 3600 Sekunden, eine Stunde, eingestellt. Dies bedeutet, dass Sie nach Eingabe des Zugriffstokens beim ersten git push und dessen Zwischenspeicherung eine Stunde lang git push und git-Befehle verwenden können, ohne das Zugriffstoken erneut einzugeben.
git config --global credential.helper 'cache --timeout=3600'
Um in einer Datei zu speichern
git config --global credential.helper 'store'
Wenn in einer Datei gespeichert wird, werden die Token-Daten, sofern keine Einstellungen geändert werden, im folgenden Dateipfad gespeichert.
~/.git-credentials
Sie können die gespeicherten Token-Daten mit dem folgenden Befehl ausgeben.
cat ~/.git-credentials
Referenz: