Wo soll ich mein persönliches Git-Zugriffstoken speichern?

Lesezeit: 10 Minuten

Wo soll ich mein personliches Git Zugriffstoken speichern
Krzysztof Słowiński

Ist es notwendig, das persönliche Zugriffstoken nach der Generierung in GitHub irgendwo lokal auf der Maschine zu speichern?

Wenn ja, gibt es eine bevorzugte Aufbewahrungsmöglichkeit?

  • Behandeln Sie Ihre Token wie Passwörter und halten Sie sie geheim. Verwenden Sie bei der Arbeit mit der API Token als Umgebungsvariablen, anstatt sie in Ihren Programmen fest zu codieren. Siehe Nummer 8 aus den offiziellen Dokumenten: help.github.com/articles/…

    – Saugat

    9. Oktober 2017 um 12:01 Uhr

  • Genau, ich habe diesen Kommentar gesehen, als ich das Zugriffstoken generiert habe, aber ich war mir nicht sicher, wie die Leute es in der Praxis schützen.

    – Krzysztof Słowiński

    9. Oktober 2017 um 12:05 Uhr

  • Das kommt mir so seltsam vor. Der halbe Sinn von Passwörtern besteht darin, dass Sie sie sich (idealerweise) merken und das System sie hasht, sodass sie niemals irgendwo im Klartext gespeichert werden. Doch das persönliche Zugriffstokensystem von GitHub scheint Sie im Grunde dazu zu zwingen, das Token im Klartext zu speichern?

    – user56reinstatemonica8

    24. Juli 2018 um 11:37 Uhr

  • Sie werden automatisch generiert und sind lang, daher ist es keine Option, sie auswendig zu lernen.

    – Krzysztof Słowiński

    1. August 2018 um 3:15 Uhr


  • Es scheint, dass GitHub gerade die Passwortauthentifizierung für deaktiviert hat git push und erzwingt jetzt stattdessen die Verwendung eines Tokens. Also müssen wir das Token jetzt im Klartext speichern oder ein Hilfsprogramm für Anmeldeinformationen verwenden, um es für Sie zu speichern. In jedem Fall hat eine Person, die auf Ihren Computer zugreift, jetzt Schreibzugriff auf Ihr Repo. – Damals, als ich nur ein Passwort verwenden konnte, das ich jedes Mal eingeben musste, gab es dieses besondere Sicherheitsrisiko nicht. Und vergessen wir nicht, dass jemand, der mein Passwort kennt, dieses leicht verwenden könnte, um seine eigenen Token zu erstellen. In Bezug auf die Sicherheit gewinnen wir also nichts, es sei denn, GitHub entscheidet sich auch für die Durchsetzung von 2FA.

    – Forivin

    28. Juli 2021 um 8:21 Uhr

Wo soll ich mein personliches Git Zugriffstoken speichern
VonC

Der halbe Sinn von Passwörtern besteht darin, dass Sie sie sich (idealerweise) merken und das System sie hasht, sodass sie niemals irgendwo im Klartext gespeichert werden.
Doch das persönliche Zugriffstokensystem von GitHub scheint Sie im Grunde dazu zu zwingen, das Token im Klartext zu speichern?

Zuerst ein PAT (Personal Access Token) ist kein einfaches Passwort, sondern ein Äquivalent, das:

  • Sie können mehrere Male generieren (z. B. eine pro Maschine, von der aus Sie auf das GitHub-Repository zugreifen müssen).
  • du kannst widerrufen jederzeit (über die GitHub-Weboberfläche), wodurch diese PAT obsolet wird, selbst wenn sie auf einem dieser Computer verweilt.

Das unterscheidet sich von Ihrem Passwort, das nur für Ihr Konto gilt und nicht ohne weiteres geändert werden kann Auch Ändern Sie es überall dort, wo Sie es verwenden.


Da ein PAT anstelle eines Passworts verwendet werden kann, wenn Sie Git-Operationen über HTTPS mit Git in der Befehlszeile oder der API ausführen, können Sie a Git-Credential-Helfer um es sicher zwischenzuspeichern.
Unter Windows würde dies beispielsweise den Windows Credential Manager über die verwenden GCM – Git Credential Manager – für Windows, Mac oder Linux:

git config --global credential.helper manager-core

Wenn Sie zum ersten Mal zu einem Repo pushen, werden Sie in einem Popup nach Ihren Anmeldeinformationen gefragt: Benutzername und Ihr Pat.
Beim nächsten Mal wird es nicht mehr fragen und dieses PAT direkt wiederverwenden, das sicher in Ihrem Credential Manager gespeichert bleibt.

Eine ähnliche Idee gilt für Mac mit dem OSX-Schlüsselbundund Linux mit der GNOME-Schlüsselbund (im Jahr 2021 würde es eine DBus-Sitzung benötigen und libsecret), aber im Jahr 2021 deckt GCM-Core diese Anwendungsfälle ab.
Die Idee bleibt: Speichern Sie das PAT in einem verschlüsselt Berechtigungsspeicher.


Wie oben erwähnt, ist die modernere Lösung (Q4 2020). Microsoft Git-Credential-Manager-Core

git config --global credential.helper manager-core

Sie müssen dies installieren git-credential-manager-coreHerunterladen seiner neueste Erscheinungwie gcmcore-linux_amd64.2.0.474.41365.deb

sudo dpkg -i <path-to-package>
git-credential-manager-core configure

Obwohl Sie mit GCM (Git-Credential-Manager-Core) unter Linux, wie von Mekky Mayata in den Kommentaren erwähnt, eine definieren müssen git config --global credential.credentialStore Erste.

Sehen “Anmeldeinformationsspeicher unter Linux“:

Es gibt vier Optionen zum Speichern von Anmeldeinformationen, die Git Credential Manager (GCM) auf Linux-Plattformen verwaltet:

Standardmäßig kommt GCM nicht konfiguriert.
Sie können auswählen, welcher Anmeldeinformationsspeicher verwendet werden soll, indem Sie festlegen GCM_CREDENTIAL_STORE Umgebungsvariable oder die credential.credentialStore Git-Konfigurationseinstellung.

Wie von agent18 in notiert die Kommentareverwenden git-credential-libsecret nach der Installation libsecret-1-0 und libsecret-1-dev ist ein guter erster Schritt.
Aber auch das sollte jetzt abgeschlossen sein credential-manager-core.

  • Die von Ihnen verlinkte GNOME-Schlüsselbundlösung funktioniert nicht für Ubuntu 20.04, da das Paket libgnome-keyring-dev ist in dieser Suite nicht verfügbar. Meinten Sie damit, dass die Linux-Unterstützung noch nicht vollständig implementiert ist? Welche Problemumgehungen werden empfohlen und wo kann ich den Fortschritt überprüfen?

    – Mxt

    2. Februar 2021 um 22:48 Uhr

  • @Mxt Der GCM-Core unterstützt jetzt Linux (github.com/microsoft/Git-Credential-Manager-Core/blob/master/…), tut es jetzt der offizielle Workaround.

    – VonC

    2. Februar 2021 um 23:21 Uhr

  • Die letzten beiden Zeilen geben mir den folgenden Fehler nach git push: /var/tmp/.net/user/git-credential-manager-core/unqypyc0.awl/git-credential-manager-core get: 1: /var/tmp/.net/user/git-credential-manager-core/unqypyc0.awl/git-credential-manager-core: not found

    – Ilja Palatschew

    13. Februar 2021 um 9:56 Uhr


  • Beim Ausführen der obigen Befehle unter Linux funktionierte es einwandfrei, aber ich erhielt “fatal: No credential backing store has selected”. löste dies durch Bearbeiten der Git-Konfigurationsdatei git config -e --global und Hinzufügen eines credentialStore-Werts (plaintext, gpg, secretservice) dazu. Danke @VonC

    – Mekky_Mayata

    26. März 2021 um 12:19 Uhr

  • @Mekky_Mayata Guter Punkt. Ich habe die Antwort bearbeitet, um diesen Schritt für Linux besser sichtbar zu machen, und die entsprechende Dokumentation hinzugefügt.

    – VonC

    26. März 2021 um 12:26 Uhr

In meinem Fall funktionierte die akzeptierte Lösung in Ubuntu nicht mit einer Meldung wie

git: ‘credential-manager’ ist kein git-Befehl

aber store anstatt manager gut gearbeitet:

git config --global credential.helper store

  • Nur um eine Anmerkung hinzuzufügen – nachdem Sie dies aktiviert haben, werden Sie bei Ihrem nächsten Commit zur Eingabe Ihrer Creds aufgefordert. Danach werden sie gespeichert.

    – D3l_Gato

    1. Dezember 2020 um 20:56 Uhr

  • Dies scheint Ihr Token im Klartext in ~/.git-credentials zu speichern

    – Stanley Bak

    20. Dezember 2020 um 17:45 Uhr

  • Ich finde es sehr hilfreich, wenn Leute zumindest einen Link bereitstellen, nachdem sie vor etwas gewarnt haben. Schauen Sie bitte Hier für hervorragende Anweisungen zum sicheren “Speichern” des PAT und zum Arbeiten mit dem Git-Workflow. Nur 3 Zeilen Code.

    – Agent18

    2. Mai 2021 um 19:20 Uhr

1641782761 240 Python aktualisierenneu laden
Agent18

Getestet auf Ubuntu 20.04, fast frisch installiert, mit Git 2.25.1 und Unity 7.5.

Authentifizierungsgrundlagen

Github benötigt einen Authentifizierungsschlüssel (mit bestimmten Rechten, die an diesen Authentifizierungsschlüssel gebunden sind). Ein bestimmter Authentifizierungsschlüssel hat bestimmte Rechte (Private Repos lesen, Öffentliche Repos lesen, schreiben usw.) und “fungiert als Passwort”, verbunden mit Rechten, die widerrufen werden können, wann immer der Benutzer es wünscht.

Persönliches Zugriffstoken

  1. Wir beginnen mit der Herstellung von a KLOPFEN. IE, Einstellungen –> Entwicklereinstellungen –> Persönliche Zugriffstoken –> Neues Token generieren –> Hinweis –> Berechtigungen festlegen (repo, repo_hook vielleicht) –> Token generieren
  2. git push das Repo und geben Sie das generierte Token (sehr langes Passwort) als Passwort ein, wenn Sie dazu aufgefordert werden.

Speichern des Passworts auf unterschiedliche Weise

    • Kann in einer Datei durchgeführt und dann verwendet werden xclip um es zurück in die Zwischenablage zu bringen und es jedes Mal einzufügen (Scheiß drauf)
    • Cache mit dem Hilfe von Git-Befehlen git config credential.helper cache <time-limit-of-cache>. Aber Sie müssen das Passwort nach dem Zeitlimit immer noch irgendwie zwischenspeichern.
    • Speichern Sie es dauerhaft in einer Datei mit git-Befehlen git config credential.helper store (verwenden Sie nicht –global). Dies ist NICHT VERSCHLÜSSELT. Sie können die Datei öffnen und lesen. (z. B. wenn jemand Zugriff auf Ihren Laptop erhält, kann er das Passwort ziemlich genau mit einem bootfähigen USB lesen (vorausgesetzt, Ihr gesamtes System ist nicht verschlüsselt)).
    • Oder gehen Sie die Verschlüsselungsroute gemäß Hier. Es ist überhaupt nicht kompliziert. 3 einfache Schritte.
sudo apt-get install libsecret-1-0 libsecret-1-dev
sudo make --directory=/usr/share/doc/git/contrib/credential/libsecret
    
git config credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret

Dies ermöglicht das Speichern des Passworts/persönlichen Zugangstokens in einem verschlüsselten Format. Die git config Datei finden Sie in der .git/config Datei in Ihrem Loca-Repo wie gezeigt Hierwenn Sie es jemals brauchen.

PS Es gibt viele Stellen, die die Verwendung von vorschlagen Wichtel-Schlüsselanhänger aber das ist anscheinend veraltet.

Speichern von Passwörtern/PATs für mehr als ein Konto

Dies wird schwierig und es scheint, als würde @VonC vorschlagen, dass wir a benötigen Git-Credential-Manager core (GCM-Kern). Diese Antwort wird basierend auf meinen Erkenntnissen in dieser Antwort verbessert.

  1. Installieren Sie zuerst den GCM-Core

    1. Herunterladen neuestes .deb-Paket
    2. sudo dpkg -i <path-to-package>
    3. git-credential-manager-core configure
    4. git config --global credential.credentialStore secretservice wie wir verwenden libsecret
  2. Holen Sie sich den neuesten Git

    In meinem Fall hatte ich git 2.25 und bekam einen Fehler error: unknown option 'show-scope'. Es scheint, dass der GCM-Kern einen höheren Git verwendet (mindestens 2.26).

    Installieren Sie also das Neueste und Beste git gem Hier:

     sudo add-apt-repository ppa:git-core/ppa
     sudo apt-get update
     apt list git # shows the latest git currently 2.31
     sudo apt-get install git #or sudo apt-get upgrade
    
  3. Aktualisieren Sie den Git-Remote-Pfad mit dem integrierten Benutzernamen

    Der GCM-Kern benötigt dies, um die verschiedenen Konten zu identifizieren.:(

     git remote set-url origin https://user1@github.com/user1/myRepo1.git
     git remote set-url origin https://user2@github.com/user1/myRepo1.git
                                   ^^^^^
    

Dein ~/.gitconfig Datei hat also folgendes:

[credential]
   helper = /usr/bin/git-credential-manager-core
   credentialStore = secretservice
[credential "https://dev.azure.com"]
   useHttpPath = true

  • Ich habe Ihre Antwort bereits positiv bewertet, aber tolles Feedback.

    – VonC

    5. Mai 2021 um 19:13 Uhr

  • musste ich benutzen git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret erase vorher und speichern Sie dann das neue Token. Ich habe bereits libsecret verwendet

    – Vimieiro

    15. September 2021 um 19:39 Uhr

  • Ihre Antwort war nützlich, aber so viel Drama. Das war alles, was ich tat git remote set-url origin https://username:your-personal-access-token@github.com/username/repo.git

    – iKev61

    3. Dezember 2021 um 15:10 Uhr

1646393894 740 Wo soll ich mein personliches Git Zugriffstoken speichern
zrash

Alternativ können Sie eine erstellen ~/.netrc Datei im Home-Verzeichnis und speichern Sie Ihre Anmeldeinformationen darin.

cat ~/.netrc
machine github.com login <login-id> password <token-password>

1646393894 148 Wo soll ich mein personliches Git Zugriffstoken speichern
Aswat

Gehen Sie folgendermaßen vor, um Ihre Anmeldeinformationen im Cache zu speichern und sich nicht jedes Mal anzumelden, wenn Sie eine Git-Aktion ausführen:

  1. Navigieren Sie zu Ihrem lokalen Repository-Ordner.
  2. Im Terminal des aktuellen Ordners: git config --global --replace-all credential.helper cache
  3. Ausführen git push oder git pull.
  4. Melden Sie sich mit Benutzername und Zugangstoken an (Zugangstoken ist Ihr Passwort). Das Token kann in GitHub eingerichtet werden und hat Zugriff auf Repo, Workflow, Write:Packages und Delete:Packages.
  5. Wiederholen git push oder eine beliebige git-Aktion und Sie werden feststellen, dass von nun an keine Anmeldedaten mehr abgefragt werden.

1646393895 820 Wo soll ich mein personliches Git Zugriffstoken speichern
nbari

Ich bewahre sie gerne verschlüsselt im Repository auf und lade sie mit .envrc (https://direnv.net/)

Dazu verwende ich ssh-Tresor um die Daten mit my zu verschlüsseln ssh-Schlüssel, die GitHub bereits verfügbar machtzum Beispiel:

echo MY_TOKEN="secret" | ssh-vault -u <github-user> create > my-encypted-vars.ssh

Dann der Inhalt von .envrc sieht in etwa so aus:

echo "Enter ssh key password"
context=$(ssh-vault view $HOME/projects/my-encrypted.ssh | tail -n +2)
export ${context}

Dadurch werden die Daten entschlüsselt my-encrypted-vars.ssh Datei und Set MY_TOKEN in meine Umgebungsvariablen jedes Mal, wenn ich cd in das Projekt dir.

Dadurch werden Token/Variablen “sicher” gespeichert und sind immer bereit, als Umgebungsvariablen verwendet zu werden

Versuchen Sie, dies zu aktivieren, um das Fortbestehen über Push / Pulls hinweg zu unterstützen

git config credential.helper store

Für das fortlaufende Klonen des Repos / für macOS-Benutzer / installieren Sie iTerm2
https://iterm2.com/

Geben Sie hier die Bildbeschreibung ein

Toolbelt aktivieren

Geben Sie hier die Bildbeschreibung ein

Klicken Sie einfach auf das Snippet, wann immer Sie es brauchen. PS Sie verwenden oh-my-zsh, nicht wahr?
https://github.com/ohmyzsh/ohmyzsh

934300cookie-checkWo soll ich mein persönliches Git-Zugriffstoken speichern?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy