Frage Gibt es eine Möglichkeit, die Passworteingabe bei Verwendung von https: // auf GitHub zu überspringen?


Vor kurzem habe ich meine Repositories auf https: // auf GitHub umgestellt (wegen Firewall-Problemen), und jedes Mal wird nach einem Passwort gefragt. Früher hatte ich eine SSH Zertifikat, und es war genug. Gibt es eine Möglichkeit, das Passwort in meinem Fall zu umgehen (mit http / https)?


1621
2018-03-17 17:47


Ursprung


Antworten:


Mit Git Version 1.7.9 und später

Seit Git 1.7.9 (veröffentlicht Ende Januar 2012) gibt es in Git einen ordentlichen Mechanismus, um zu vermeiden, dass Sie Ihr Passwort für HTTP / HTTPS immer wieder eingeben müssen Credential-Helfer. (Dank an dazonisch um auf dieses neue Feature in den Kommentaren zu verweisen.)

Mit Git 1.7.9 oder höher können Sie einfach einen der folgenden Credential-Helfer verwenden:

git config --global credential.helper cache

... die Git anweist, Ihr Passwort für 15 Minuten (standardmäßig) zwischenzuspeichern. Sie können ein längeres Zeitlimit festlegen mit:

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

(Dieses Beispiel wurde in der GitHub Hilfeseite für Linux.) Sie können Ihre Anmeldeinformationen auch dauerhaft speichern, wenn Sie dies wünschen, siehe die anderen Antworten unten.

GitHubs Hilfe schlägt auch vor dass, wenn Sie auf Mac OS X sind und verwendet werden Homebrew Um Git zu installieren, können Sie den systemeigenen Mac OS X Keystore mit folgenden Funktionen verwenden:

git config --global credential.helper osxkeychain

Für Windows gibt es einen Helfer namens 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 und höher (März 2016):

git config --global credential.helper manager

Für Linux können Sie benutzen gnome-keyring(oder eine andere Schlüsselimplementierung wie KWallet).

Mit Git Versionen vor 1.7.9

Bei Versionen von Git vor 1.7.9 ist diese sicherere Option nicht verfügbar und Sie müssen die URL ändern, die Sie verwenden origin remote verwendet das Passwort auf folgende Weise:

https://you:password@github.com/you/example.git

mit anderen Worten mit :password nach dem Benutzernamen und vor dem @.

Sie können eine neue URL für Ihre festlegen origin entfernt mit:

git config remote.origin.url https://you:password@github.com/you/example.git

Stellen Sie sicher, dass Sie verwenden https und Sie sollten sich darüber im Klaren sein, dass Ihr GitHub Passwort in Klartext gespeichert wird, wenn Sie dies tun .git Verzeichnis, das offensichtlich unerwünscht ist.

Mit jeder Git-Version (gut, seit Version 0.99)

Ein alternativer Ansatz besteht darin, Ihren Benutzernamen und Ihr Passwort in Ihrem Konto zu speichern ~/.netrc Datei, obwohl, wie mit dem Passwort in der Remote-URL beibehalten, bedeutet dies, dass Ihr Passwort auf der Festplatte im Klartext gespeichert wird und somit weniger sicher und nicht empfohlen ist. Wenn Sie diesen Ansatz verwenden möchten, fügen Sie die folgende Zeile hinzu ~/.netrc:

machine <hostname> login <username> password <password>

... ersetzen <hostname> mit dem Hostnamen des Servers und <username> und <password> mit Ihrem Benutzernamen und Passwort. Denken Sie auch daran, restriktive Dateisystemberechtigungen für diese Datei festzulegen:

chmod 600 ~/.netrc

Beachten Sie, dass diese Datei unter Windows aufgerufen werden sollte _netrcund Sie müssen möglicherweise die Umgebungsvariable% HOME% definieren. Weitere Informationen finden Sie unter:


2133
2018-03-17 17:54



Sie können Git auch Ihre Anmeldeinformationen dauerhaft speichern lassen, indem Sie Folgendes verwenden:

git config credential.helper store

Hinweis: Während dies bequem ist, speichert Git Ihre Anmeldeinformationen in Klartext in eine lokale Datei (.git-credentials) unter Ihrem Projektverzeichnis (siehe unten für das Verzeichnis "home"). 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 jedes Mal, wenn es erforderlich ist, nach Ihren Anmeldeinformationen fragt Verbinden Sie sich mit dem Remote-Repository, können Sie diesen Befehl ausführen:

git config --unset credential.helper

Um die Passwörter zu speichern .git-credentials in deinem %HOME% Verzeichnis im Gegensatz zum Projektverzeichnis: Verwenden Sie die --global Flagge

git config --global credential.helper store

638
2017-09-03 01:14



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

Das Speichern eines Kennworts für eine Git-Repository-HTTPS-URL ist mit a möglich ~/.netrc (Unix) oder %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-Datenschutzwächter)und entschlüssel es jedes Mal, wenn es ein Passwort benötigt (z. B. push/pull/fetch/clone Betrieb).


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

Sehen commit 786ef50, commit f07eeed (12. Mai 2018) von Luis Marsano (``).
(Zusammengeführt von Junio ​​C Hamano - gitster - im commit 017b7c5, 30. Mai 2018) 

git-credential-netrc: akzeptieren gpg Möglichkeit

git-credential-netrc wurde hart codiert um zu entschlüsselngpg' Egal ob   die gpg.program Option.
  Dies ist ein Problem bei Distributionen wie Debian, die modernes GnuPG etwas anderes nennen, wie 'gpg2"


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

Mit Windows:

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

  • Installieren gpg4Win Lite, die minimale Befehlszeilenschnittstelle gnupg (nimm die neueste gpg4win-vanilla-2.X.Y-betaZZ.exe), und vervollständige deinen 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". Schon seit gpg4win-vanilla-2 kommt mit gpg2.exe, du musst 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 eine Passphrase für diesen Schlüssel verwenden.)

  • Vertraue diesem Schlüssel

  • Installieren Sie das Berechtigungsskript für den Berechtigungsnachweis 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
    

(Ja, das 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
    

(Vergiss nicht die 'protocolTeil:http' oder 'https'Abhängig von der URL, die Sie verwenden werden.)

  • Verschlüsseln Sie diese Datei:

    gpg -e -r a_recipient _netrc
    

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

  • 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 vor sich geht.)

Von nun an wird jeder Git-Befehl, der eine HTTP (S) -URL verwendet, die eine Authentifizierung erfordert, diese entschlüsseln _netrc.gpgDatei und verwenden Sie das Login / Passwort, das dem Server zugeordnet ist, mit dem Sie sich in Verbindung setzen. Das erste Mal wird GPG Sie nach der Passphrase Ihres GPG-Schlüssels fragen, um die Datei zu entschlüsseln. Die anderen Zeiten, der GPG-Agent automatisch gestartet Beim ersten GPG-Anruf wird diese Passphrase für Sie bereitgestellt.

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


85
2017-08-21 15:48



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

https://user:password@github.com/...

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 nur noch den Benutzernamen eingeben (https://user@github.com/...), die dir wenigstens die Hälfte des Aufwands erspart.

Möglicherweise möchten Sie lieber zu SSH wechseln oder die GitHub-Client-Software verwenden.


32
2018-01-06 16:43



Verwenden Sie einen Anmeldeinformationenspeicher.

Für Git 2.11+ auf OSX und Linux, Verwenden Sie den integrierten Berechtigungsnachweis von git:

git config --global credential.helper libsecret

Für msysgit 1.7.9+ auf Windows:

git config --global credential.helper wincred

Für Git 1.7.9+ unter OS X verwenden Sie:

git config --global credential.helper osxkeychain

30
2017-09-09 03:57



Du kannst es einfach benutzen

git config credential.helper store

Wenn Sie das Passwort das nächste Mal mit Pull oder Push eingeben, wird es gespeichert .git-credentials als einfacher Text (etwas unsicher, aber einfach in den geschützten Ordner)

Und das ist es, wie auf dieser Seite angegeben:

https://git-scm.com/docs/git-credential-store


30
2017-09-21 13:03



Ich bin wahrscheinlich ein bisschen langsam, aber es war mir nicht sofort klar, dass ich zuerst den Helfer herunterladen musste! Ich habe den Credential.Helper Download unter gefunden Atlassian's Dauerhafte Authentifizierung mit Git-Repositories, ich hoffe es hilft.

Zitat:

Befolgen Sie diese Schritte, wenn Sie Git mit dem Zwischenspeichern von Anmeldeinformationen unter OSX 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

18
2017-10-05 05:31



Auf einem GNU / Linux-Setup funktioniert ein ~ / .netrc auch ziemlich gut:

$ cat ~/.netrc
machine github.com login lot105 password howsyafather

Es hängt möglicherweise davon ab, für welche Netzwerkbibliotheken Git verwendet wird HTTPS Transport.


18
2017-12-05 13:28