Gibt es eine Möglichkeit, https-Anmeldeinformationen zum Pushen von Commits zwischenzuspeichern?

Lesezeit: 11 Minuten

Gibt es eine Moglichkeit https Anmeldeinformationen zum Pushen von Commits zwischenzuspeichern
Zeppelin

Ich habe kürzlich auf die Synchronisierung meiner Repositories mit https:// auf GitHub umgestellt (aufgrund von Firewall-Problemen), und jedes Mal wird nach einem Passwort gefragt.

Gibt es eine Möglichkeit, die Anmeldeinformationen zwischenzuspeichern, anstatt sich jedes Mal zu authentifizieren? git push?

  • Siehe auch superuser.com/questions/199507/…

    – Oberst Panik

    27. März 2013 um 16:27 Uhr

  • Sie können jetzt einen Anmeldeinformationshelfer verwenden, um die zu verschlüsseln _netrc Datei mit Ihren Anmeldeinformationen. Siehe meine Antwort unten. Das fand ich sicherer als die git-credential-winstore.exe (Speicher-Cache), der unter Windows etwas fehlerhaft ist.

    – VonC

    21. August 2013 um 15:50 Uhr

  • Siehe auch Git push erfordert Benutzername und Passwort und Git fordert mich immer wieder zur Eingabe des Passworts auf.

    Benutzer456814

    22. August 2013 um 13:08 Uhr

  • Siehe auch stackoverflow.com/questions/35942754/…

    – Oberst Panik

    26. Februar um 12:08 Uhr

1646908093 282 Gibt es eine Moglichkeit https Anmeldeinformationen zum Pushen von Commits zwischenzuspeichern
Markus Longair

Seit Git 1.7.9 (Release 2012) gibt es in Git einen netten Mechanismus, um nicht ständig sein Passwort für HTTP/HTTPS eintippen zu müssen, genannt anerkannte Helfer.

Sie können einfach einen der folgenden Helfer für Anmeldeinformationen verwenden:

git config --global credential.helper cache

Die credential.helper-Cache-Wert weist Git an, Ihr Passwort für eine bestimmte Zeit im Speicher zwischenzuspeichern Protokoll. Der Standardwert ist 15 Minuten, Sie können ein längeres Timeout einstellen mit:

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

Was den Cache auf 1 Stunde setzt, oder:

git config --global credential.helper "cache --timeout=86400"

Für 1 Tag. Sie können Ihre Zugangsdaten auf Wunsch auch dauerhaft speichern, siehe die anderen Antworten unten.

GitHubs Hilfe schlägt auch vor das, wenn Sie auf Mac OS X und verwendet werden Hausgemacht Um Git zu installieren, können Sie den nativen Keystore von Mac OS X verwenden mit:

git config --global credential.helper osxkeychain

Für Windowsda wird ein Helfer gerufen Git Credential Manager für Windows oder wincred in msysgit.

git config --global credential.helper wincred # obsolete

Mit Git für Windows 2.7.3+ (März 2016):

git config --global credential.helper manager

Für Linuxwürden Sie (im Jahr 2011) verwenden gnome-keyring(oder eine andere Schlüsselbundimplementierung wie KWallet).

Heutzutage (2020) wäre das (unter Linux)

Fedora

sudo dnf install git-credential-libsecret
git config --global credential.helper /usr/libexec/git-core/git-credential-libsecret

Ubuntu

sudo apt-get install libsecret-1-0 libsecret-1-dev
cd /usr/share/doc/git/contrib/credential/libsecret
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret

  • Speichern Sie Ihr Passwort nicht im Klartext. Ab Git 1.7.9 können Sie Credential Helper verwenden. git config --global credential.helper osxkeychain auf OS X. Für andere Betriebssysteme siehe help.github.com/articles/set-up-git

    – dazonisch

    22. Juni 2012 um 7:29 Uhr


  • FWIW, das osx-Schlüsselbund-Zeug ist Teil des Basis-GIT-Quellcodes, es ist keine exklusive Komponente von Brew oder MacPorts oder was auch immer der Geschmack des Monats ist. Und Sie müssen Git nicht einmal von Grund auf neu erstellen – cd einfach contrib/credential/osxkeychain/ und führen Sie make aus.

    – Synthesizerpatel

    9. April 2013 um 14:04 Uhr

  • Bei der Zwei-Faktor-Authentifizierung müssen Sie das verwenden, was Github a nennt Personenzugriffstoken. Tatsächlich sollten Sie immer eines verwenden, da Sie im Gegensatz zu einem Passwort kontrollieren können, welchen Zugriff es gewährt. Ersetzen Sie einfach das Passwort in der URL, damit Sie am Ende erhalten https://username:[email protected]/username/project.git. Es macht auf der Festplatte gespeicherte Klartext-Passwörter fast sicher genug, um sie zu verwenden.

    – Russel Stuart

    10. April 2014 um 10:18 Uhr


  • git config --global credential.helper cache funktioniert nicht unter Windows: stackoverflow.com/questions/11693074/… verwenden gitcredentialstore auf Windows ein glücklich sein

    – Sebastian J.

    2. Januar 2015 um 15:35 Uhr


  • Gibt es eine Möglichkeit, dieses Timeout auf unendlich zu setzen?

    – sudo

    10. August 2015 um 18:25 Uhr

1646908093 459 Gibt es eine Moglichkeit https Anmeldeinformationen zum Pushen von Commits zwischenzuspeichern
Giri Alwar

Sie können Git auch dazu bringen, Ihre Zugangsdaten dauerhaft zu speichern git-credential-store wie folgt:

git config credential.helper store

Hinweis: Obwohl dies praktisch ist, speichert Git Ihre Anmeldeinformationen im Klartext in einer lokalen Datei (.git-credentials) in Ihrem Projektverzeichnis (siehe unten für das „Home“-Verzeichnis). Wenn Ihnen das nicht gefällt, löschen Sie diese Datei und wechseln Sie zur Verwendung der Cache-Option.

Wenn Sie möchten, dass Git Sie jedes Mal nach Anmeldeinformationen fragt, wenn es eine Verbindung zum Remote-Repository herstellen muss, können Sie diesen Befehl ausführen:

git config --unset credential.helper

Zum Speichern der Passwörter in .git-credentials in deiner %HOME% Verzeichnis im Gegensatz zum Projektverzeichnis: Verwenden Sie die --global Flagge

git config --global credential.helper store

  • Unter Windows können Sie ein Hilfsprogramm herunterladen, das Dinge konfiguriert, um eine verschlüsselte Version Ihres GIT-Passworts im Windows Creditial Store zu speichern, siehe confluence.atlassian.com/display/STASH/…

    – Contango

    22. Januar 2013 um 18:39 Uhr


  • Ich fand, dass ich –global angeben musste, oder es würde versuchen, die Einstellungen im aktuellen Repository zu speichern: git config --global credential.helper store

    – Lappen

    15. Mai 2013 um 3:25 Uhr

  • Warum sollte der Cache statt dauerhaft gespeichert werden? Computer teilen oder so?

    – Michael J. Calkins

    24. August 2013 um 15:42 Uhr

  • @BrianGordon Ich verwende GIT 1.9.5 unter Windows und --global Flagge war überflüssig. Auch ohne dieses Flag wurde die Credentials-Datei in erstellt %USER_HOME% Verzeichnis.

    – jFrenetisch

    18. August 2015 um 16:24 Uhr

  • Wenn es nicht im Klartext gespeichert wird, womit wird es geschützt? Ihr Passwort? Müsste es Sie dann nicht nach Ihrem Admin-Passwort fragen, wenn Sie sich mit Git verbinden? Ist es nicht ein bisschen seltsam, ein Passwort eingeben zu müssen, um ein anderes Passwort zu erhalten?

    – Knirscher

    10. März 2016 um 15:35 Uhr

Gibt es eine Moglichkeit https Anmeldeinformationen zum Pushen von Commits zwischenzuspeichern
VonC

TLDR; Benutze ein verschlüsselte netrc-Datei mit Git 1.8.3+.

Das Speichern eines Passworts für eine HTTPS-URL eines Git-Repositorys ist mit a möglich ~/.netrc (Unix) bzw %HOME%/_netrc (beachten Sie das _) unter Windows.

Aber: Diese Datei würde Ihr Passwort im Klartext speichern.

Lösung: Verschlüsseln Sie diese Datei mit GPG (GNU Privacy Guard)und lassen Sie Git es jedes Mal entschlüsseln, wenn es ein Passwort benötigt (z push/pull/fetch/clone Operation).


Hinweis: Mit Git 2.18 (Q2 2018) können Sie jetzt das GPG anpassen, das zum Entschlüsseln der verschlüsselten verwendet wird .netrc Datei.

Sehen begehen 786ef50, begehen f07eeed (12. Mai 2018) von Luis Marsano (“).
(Zusammengeführt von Junio ​​C. Hamano — gitster in 017b7c5 begehen30. Mai 2018)

git-credential-netrc: annehmen gpg Möglichkeit

git-credential-netrc wurde zum Entschlüsseln fest codiert mit ‘gpg‘ unabhängig von der Option gpg.program.
Dies ist ein Problem bei Distributionen wie Debian, die modernes GnuPG anders nennen, wie ‘gpg2


Schritt-für-Schritt-Anleitung für Windows

Mit Windows:

(Git hat eine gpg.exe in seiner Distribution, aber die Verwendung einer vollständigen GPG-Installation enthält a gpg-agent.exedas Ihre mit Ihrem GPG-Schlüssel verknüpfte Passphrase speichert.)

  • Installieren gpg4Win Litedie minimale gnupg-Befehlszeilenschnittstelle (nehmen Sie die neueste gpg4win-vanilla-2.X.Y-betaZZ.exe) und vervollständigen Sie Ihren PATH mit dem GPG-Installationsverzeichnis:

    set PATH=%PATH%:C:\path\to\gpg
    copy C:\path\to\gpg\gpg2.exe C:\path\to\gpg\gpg.exe
    

(Beachten Sie das ‘copy‘ Befehl: Git benötigt ein Bash-Skript, um den Befehl auszuführen ‘gpg‘. Seit gpg4win-vanilla-2 kommt mit gpg2.exemüssen Sie es duplizieren.)

  • Erstellen oder importieren Sie einen GPG-Schlüssel und vertrauen Sie ihm:

    gpgp --import aKey
    # or
    gpg --gen-key
    

(Stellen Sie sicher, dass Sie diesem Schlüssel eine Passphrase zuweisen.)

  • Vertrauen Sie diesem Schlüssel

  • Installieren Sie das Hilfsskript für Anmeldeinformationen in einem Verzeichnis in Ihrem %PATH%:

    cd c:\a\fodler\in\your\path
    curl -o c:\prgs\bin\git-credential-netrc https://raw.githubusercontent.com/git/git/master/contrib/credential/netrc/git-credential-netrc.perl
    

(Achtung: das Skript wird in Git 2.25.x/2.26 umbenannt, siehe unten)

(Ja, dies ist ein Bash-Skript, aber es funktioniert unter Windows, da es von Git aufgerufen wird.)

  • Erstellen Sie eine _netrc-Datei im Klartext

    machine a_server.corp.com
    login a_login
    password a_password
    protocol https
    
    machine a_server2.corp.com
    login a_login2
    password a_password2
    protocol https
    

(Vergessen Sie nicht das ‘protocol‘ Teil: ‘http‘ oder ‘https‘ abhängig von der verwendeten URL.)

  • Verschlüsseln Sie diese Datei:

    gpg -e -r a_recipient _netrc
    

(Sie können jetzt löschen der _netrc Datei, wobei nur die _netrc.gpg verschlüsselt.)

  • Verwenden Sie diese verschlüsselte Datei:

    git config --local credential.helper "netrc -f C:/path/to/_netrc.gpg -v"
    

(Beachten Sie das ‘/‘: C:\path\to... würde überhaupt nicht funktionieren.) (Sie können zuerst verwenden -v -d um zu sehen, was los ist.)

Von nun an wird jeder Git-Befehl, der eine HTTP(S)-URL verwendet, die eine Authentifizierung erfordert, diese entschlüsseln _netrc.gpg Datei und verwenden Sie das Login/Passwort, das dem Server zugeordnet ist, den Sie kontaktieren. Beim ersten Mal fragt GPG Sie nach der Passphrase Ihres GPG-Schlüssels, um die Datei zu entschlüsseln. Das andere mal der gpg-agent automatisch gestartet beim ersten GPG-Aufruf wird diese Passphrase für Sie bereitstellen.

So kannst du es dir merken mehrere URLs/Logins/Passwörter in einer Datei und speichern Sie diese verschlüsselt auf Ihrer Festplatte.
Ich finde es bequemer als einen “Cache” -Helfer”, bei dem Sie sich ein anderes Passwort für jeden Ihrer Remote-Dienste merken und (einmal pro Sitzung) eingeben müssen, damit dieses Passwort im Speicher zwischengespeichert wird.


Mit Git 2.26 (Q1 2020), dem Hilfsprogramm für Anmeldeinformationen für die Verwendung .netrc wurde aktualisiert, um sofort einsatzbereit zu sein. Sehen Patch/Diskussion.

Sehen begehen 6579d93, 1c78c78 begehen (20.12.2019) von Denton Liu (Denton-L).
(Zusammengeführt von Junio ​​C. Hamano — gitster in begehe 1fd27f825. Dez. 2019)

contrib/credential/netrc: machen PERL_PATH konfigurierbar

Unterzeichnet von: Denton Liu

Der Shebang-Pfad für den Perl-Interpreter in git-credential-netrc war fest codiert.
Einige Benutzer haben es jedoch möglicherweise an einem anderen Ort und hätten das Skript daher manuell bearbeiten müssen.

Füge hinzu ein .perl Präfix für das Skript um es als Vorlage zu kennzeichnen und die generierte Version zu ignorieren.
Erweitern Sie die Makefile damit es generiert git-credential-netrc von git-credential-netrc.perlgenau wie andere Perl-Skripte.

Die Makefile-Rezepte wurden schamlos gestohlen contrib/mw-to-git/Makefile.

Und:

Mit 2.26 (Q1 2020) wurde das Hilfsprogramm für Beispiel-Anmeldeinformationen für die Verwendung von .netrc aktualisiert, damit es sofort einsatzbereit ist.

Sehen begehen 6579d93, 1c78c78 begehen (20.12.2019) von Denton Liu (Denton-L).
(Zusammengeführt von Junio ​​C. Hamano — gitster in begehe 1fd27f825. Dez. 2019)

contrib/credential/netrc: Arbeit außerhalb eines Repos

Unterzeichnet von: Denton Liu

Zur Zeit, git-credential-netrc funktioniert nicht außerhalb eines Git-Repositorys. Es schlägt mit folgendem Fehler fehl:

fatal: Not a git repository: . at /usr/share/perl5/Git.pm line 214.

Es gibt jedoch keinen wirklichen Grund, warum Sie sich in einem Repository befinden müssen. Anmeldeinformationshelfer sollten auch außerhalb des Repositorys problemlos funktionieren.

Rufen Sie die Nicht-Selbstversion von auf config() damit git-credential-netrc muss nicht mehr innerhalb eines Repositorys ausgeführt werden.

Jeff König (peff) fügt hinzu:

Ich nehme an, Sie verwenden eine gpg-verschlüsselte netrc (Wenn nicht, sollten Sie wahrscheinlich einfach verwenden credential-store).
Für “schreibgeschützten” Passwortzugriff finde ich die Kombination von pass mit config wie dieser ist ein bisschen schöner:

[credential "https://github.com"]
  username = peff
  helper = "!f() { test $1 = get && echo password=`pass github/oauth`; }; f"

  • versuche das gleiche unter Linux git-Befehl. siehe ‘git –help'”

    – sonnig

    21. Dezember 2013 um 3:26 Uhr

  • @sunny Das ist es, was die curl -o c:\prgs\bin\git-credential-netrc https://raw.github.com/git/git/master/contrib/credential/netrc/git-credential-netrc ist für: Sie müssen die kopieren git-credential-netrc irgendwo auf deinem Weg ($PATH), damit git ‘ aufrufen kanncredential-netrc‘.

    – VonC

    22. Dezember 2013 um 0:14 Uhr


  • Nun die _netrc hat bei mir nicht funktioniert bei a Windows 7 PC, aber der .netrc arbeitete für youtube-dl mit dem --netrc Argument übergeben.

    – Julian Onofrei

    12. April 2015 um 23:02 Uhr

  • @VonC scheint die aktuelle URL zu sein https://raw.githubusercontent.com/git/git/master/contrib/credential/netrc/git-credential-netrc.perl (Sieben Jahre später pfeifen 😉)

    – Gwyneth Llewelyn

    25. März 2020 um 22:50 Uhr

  • @GwynethLlewelyn Danke. Ich habe die Antwort entsprechend bearbeitet. Zögern Sie nicht, es selbst zu bearbeiten, wenn Sie andere veraltete Informationen sehen.

    – VonC

    26. März 2020 um 5:06 Uhr

1646908094 427 Gibt es eine Moglichkeit https Anmeldeinformationen zum Pushen von Commits zwischenzuspeichern
zimmer2

Verwenden Sie einen Anmeldeinformationsspeicher.

Für Git 2.11+ auf OSX und Linuxverwenden Sie den integrierten Credential Store von Git:

git config --global credential.helper libsecret

Für msysgit 1.7.9+ auf Fenster:

git config --global credential.helper wincred

Verwenden Sie für Git 1.7.9+ unter OS X:

git config --global credential.helper osxkeychain

Gibt es eine Moglichkeit https Anmeldeinformationen zum Pushen von Commits zwischenzuspeichern
würdig

Es gibt eine einfache, altmodische Möglichkeit, Benutzeranmeldeinformationen in einer HTTPS-URL zu speichern:

https://user:[email protected]/...

Sie können die URL mit ändern git remote set-url <remote-repo> <URL>

Der offensichtliche Nachteil dieses Ansatzes ist, dass Sie das Passwort im Klartext speichern müssen. Sie können immer noch einfach den Benutzernamen eingeben (https://[email protected]/...), was Ihnen mindestens die Hälfte des Aufwands erspart.

Möglicherweise ziehen Sie es vor, zu SSH zu wechseln oder die GitHub-Client-Software zu verwenden.

  • Benutzername/Passwort müssen möglicherweise verschlüsselt werden, siehe stackoverflow.com/a/34611311/3906760

    – Herr Tux

    5. Januar 2016 um 12:26 Uhr

1646908095 179 Gibt es eine Moglichkeit https Anmeldeinformationen zum Pushen von Commits zwischenzuspeichern
Peter Mortensen

Sie können einfach verwenden

git config credential.helper store

Wenn Sie das nächste Mal das Passwort per Pull oder Push eingeben, wird es in der Datei .git-credentials als Klartext gespeichert (etwas unsicher, aber legen Sie es einfach in einen geschützten Ordner).

Und das ist es, wie auf dieser Seite angegeben:

git-credential-store

  • Benutzername/Passwort müssen möglicherweise verschlüsselt werden, siehe stackoverflow.com/a/34611311/3906760

    – Herr Tux

    5. Januar 2016 um 12:26 Uhr

1646908095 179 Gibt es eine Moglichkeit https Anmeldeinformationen zum Pushen von Commits zwischenzuspeichern
Peter Mortensen

Es war mir nicht sofort klar, dass ich zuerst den Helfer herunterladen musste! Ich habe den credential.helper-Download unter gefunden Atlassian authentifiziert sich permanent mit Git-Repositories.

Zitieren:

Befolgen Sie diese Schritte, wenn Sie Git mit dem Zwischenspeichern von Anmeldeinformationen unter OS X verwenden möchten:

Laden Sie die binäre git-credential-osxkeychain herunter.

Führen Sie den folgenden Befehl aus, um sicherzustellen, dass die Binärdatei ausführbar ist:

chmod a+x git-credential-osxkeychain

Legen Sie es in das Verzeichnis /usr/local/bin.

Führen Sie den folgenden Befehl aus:

git config --global credential.helper osxkeychain

987540cookie-checkGibt es eine Möglichkeit, https-Anmeldeinformationen zum Pushen von Commits zwischenzuspeichern?

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

Privacy policy