Ich habe kürzlich auf die Synchronisierung meiner Repositorys mit https: // auf GitHub umgestellt (aufgrund von Firewall-Problemen) und jedes Mal nach einem Kennwort gefragt.
Gibt es eine Möglichkeit, die Anmeldeinformationen zwischenzuspeichern, anstatt sich jedes Mal zu authentifizieren git push
?
git
authentication
github
git-push
git-config
Zepplock
quelle
quelle
_netrc
Datei mit Ihren Anmeldeinformationen zu verschlüsseln . Siehe meine Antwort unten . Ich fand das sicherer als dengit-credential-winstore.exe
(Speicher-Cache), der unter Windows etwas fehlerhaft ist.git-credential-winstore
funktionierte am besten für Windows. Was ist fehlerhaft? Das Einrichten von ssh ist die bevorzugte Option, obwohl ich es mehrmals gemacht habe, es ist viel fehleranfälliger und manchmal funktioniert es einfach nicht, wenn Sie eine Verbindung zu mehreren Hosts herstellen müssen.Antworten:
Mit Git Version 1.7.9 und höher
Seit Git 1.7.9 (veröffentlicht Ende Januar 2012) gibt es in Git einen netten Mechanismus, mit dem Sie vermeiden müssen, dass Sie Ihr Kennwort für HTTP / HTTPS ständig eingeben müssen. Dies wird als Hilfe für Anmeldeinformationen bezeichnet . (Vielen Dank an dazonic für den Hinweis auf diese neue Funktion in den Kommentaren unten.)
Mit Git 1.7.9 oder höher können Sie nur einen der folgenden Helfer für Anmeldeinformationen verwenden:
... was Git anweist, Ihr Passwort (standardmäßig) 15 Minuten lang im Speicher zu speichern. Sie können eine längere Zeitüberschreitung festlegen mit:
(Dieses Beispiel wurde auf der GitHub-Hilfeseite für Linux vorgeschlagen .) Sie können Ihre Anmeldeinformationen bei Bedarf auch dauerhaft speichern, siehe die anderen Antworten unten.
Die Hilfe von GitHub schlägt außerdem vor, dass Sie den nativen Mac OS X-Keystore verwenden können , wenn Sie unter Mac OS X arbeiten und Git mit Homebrew installiert haben:
Für Windows gibt es einen Helfer namens Git Credential Manager für Windows oder wincred in msysgit .
Mit Git für Windows 2.7.3+ (März 2016):
Für Linux können Sie verwenden
gnome-keyring
(oder andere Schlüsselbund Implementierung wie KWallet).Mit Git-Versionen vor 1.7.9
Bei Git-Versionen vor 1.7.9 ist diese sicherere Option nicht verfügbar, und Sie müssen die URL ändern, die Ihre
origin
Fernbedienung verwendet, um das Kennwort auf folgende Weise einzuschließen :... mit anderen Worten mit
:password
nach dem Benutzernamen und vor dem@
.Sie können eine neue URL für Ihre
origin
Fernbedienung festlegen mit:Stellen Sie sicher, dass Sie verwenden
https
, und Sie sollten sich bewusst sein, dass Ihr GitHub-Passwort in diesem Fall im Klartext in Ihrem.git
Verzeichnis gespeichert wird , was offensichtlich unerwünscht ist.Mit jeder Git-Version (nun, seit Version 0.99)
Ein alternativer Ansatz besteht darin, Ihren Benutzernamen und Ihr Kennwort in Ihre
~/.netrc
Datei aufzunehmen. Wie bei der Beibehaltung des Kennworts in der Remote-URL bedeutet dies jedoch, dass Ihr Kennwort im Klartext auf der Festplatte gespeichert wird und daher weniger sicher ist und nicht empfohlen wird. Wenn Sie diesen Ansatz wählen möchten, fügen Sie Ihrer Zeile die folgende Zeile hinzu~/.netrc
:... durch
<hostname>
den Hostnamen des Servers<username>
und<password>
durch Ihren Benutzernamen und Ihr Passwort ersetzen . Denken Sie auch daran, restriktive Dateisystemberechtigungen für diese Datei festzulegen:Beachten Sie, dass diese Datei unter Windows aufgerufen werden
_netrc
sollte und Sie möglicherweise die Umgebungsvariable% HOME% definieren müssen. Weitere Informationen finden Sie unter:quelle
git config --global credential.helper osxkeychain
unter OS X. Für andere Betriebssysteme siehe help.github.com/articles/set-up-githttps://username:[email protected]/username/project.git
. Dadurch werden auf der Festplatte gespeicherte Klartextkennwörter fast sicher genug, um verwendet zu werden.git config --global credential.helper cache
funktioniert nicht unter Windows: stackoverflow.com/questions/11693074/… benutze gitcredentialstore unter Windows und sei glücklichSie können Git auch Ihre Anmeldeinformationen dauerhaft speichern lassen, indem Sie Folgendes verwenden:
Hinweis: Während dies praktisch ist, speichert Git Ihre Anmeldeinformationen im Klartext in einer lokalen Datei (.git-Anmeldeinformationen) unter Ihrem Projektverzeichnis (siehe unten für das "Home" -Verzeichnis). Wenn Ihnen das nicht gefällt, löschen Sie diese Datei und wechseln Sie zur Cache-Option.
Wenn Git Sie jedes Mal, wenn eine Verbindung zum Remote-Repository hergestellt werden muss, erneut nach Anmeldeinformationen fragt, können Sie den folgenden Befehl ausführen:
So speichern Sie die Kennwörter in
.git-credentials
Ihrem%HOME%
Verzeichnis im Gegensatz zum Projektverzeichnis: Verwenden Sie das--global
Flagquelle
git config --global credential.helper store
--global
Flag war redundant. Auch ohne dieses Flag wurde die Anmeldeinformationsdatei im%USER_HOME%
Verzeichnis erstellt.TLDR; Verwenden Sie eine verschlüsselte Netrc-Datei mit Git 1.8.3+ .
Das Speichern eines Kennworts für eine Git-Repository-HTTPS-URL ist unter Windows mit einem
~/.netrc
(Unix) oder%HOME%/_netrc
(beachten Sie das_
) möglich.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 sie jedes Mal entschlüsseln, wenn ein Kennwort erforderlich ist (für
push
/pull
/fetch
/clone
operation).Hinweis: Mit Git 2.18 (Q2 2018) können Sie jetzt das GPG anpassen, mit dem die verschlüsselte
.netrc
Datei entschlüsselt wird.Siehe Commit 786ef50 , Commit f07eeed (12. Mai 2018) von Luis Marsano (``) .
(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 017b7c5 , 30. Mai 2018)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 einegpg-agent.exe
, die Ihre Passphrase speichert, die Ihrem GPG-Schlüssel zugeordnet ist.)Installieren Sie
gpg4Win Lite
die minimale gnupg-Befehlszeilenschnittstelle (nehmen Sie die neuestegpg4win-vanilla-2.X.Y-betaZZ.exe
) und vervollständigen Sie Ihren PATH mit dem GPG-Installationsverzeichnis:(Beachten Sie den
copy
Befehl ' ': Git benötigt ein Bash-Skript, um den Befehl 'gpg
' auszuführen . Da ergpg4win-vanilla-2
mitgeliefert wirdgpg2.exe
, müssen Sie ihn duplizieren.)Erstellen oder importieren Sie einen GPG-Schlüssel und vertrauen Sie ihm:
(Stellen Sie sicher, dass Sie diesem Schlüssel eine Passphrase geben.)
Vertraue diesem Schlüssel
Installieren Sie das Hilfsskript für Anmeldeinformationen in einem Verzeichnis in Ihrem
%PATH%
:(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
(Vergessen Sie nicht den
protocol
Teil ' ': 'http
' oder 'https
', abhängig von der URL, die Sie verwenden werden.)Verschlüsseln Sie diese Datei:
(Sie können jetzt die Datei löschen
_netrc
und nur die_netrc.gpg
verschlüsselte behalten .)Verwenden Sie diese verschlüsselte Datei:
(Beachten Sie das '
/
':C:\path\to...
würde überhaupt nicht funktionieren.) (Sie können zunächst verwenden, um-v -d
zu sehen, was los ist.)Von nun an entschlüsselt jeder Git-Befehl, der eine HTTP (S) -URL verwendet, für die eine Authentifizierung erforderlich ist, diese
_netrc.gpg
Datei und verwendet das Login / Passwort, das dem Server zugeordnet ist, mit dem Sie Kontakt aufnehmen. Beim ersten Mal werden Sie von GPG nach der Passphrase Ihres GPG-Schlüssels gefragt, um die Datei zu entschlüsseln. In anderen Fällen stellt der GPG -Agent, der beim ersten GPG-Aufruf automatisch gestartet wird, diese Passphrase für Sie bereit.Auf diese Weise können Sie mehrere URLs / Anmeldungen / Kennwörter in einer Datei speichern und verschlüsselt auf Ihrer Festplatte speichern.
Ich finde es bequemer als einen "Cache" -Helfer, bei dem Sie sich (einmal pro Sitzung) ein anderes Kennwort für jeden Ihrer Remote-Dienste merken und eingeben müssen, damit dieses Kennwort im Speicher zwischengespeichert wird.
Mit Git 2.26 (Q1 2020) wurde der Beispiel-Helfer für Anmeldeinformationen für die Verwendung
.netrc
aktualisiert, damit er sofort funktioniert. Siehe Patch / Diskussion .Siehe Commit 6579d93 , Commit 1c78c78 (20. Dezember 2019) von Denton Liu (
Denton-L
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 1fd27f8 , 25. Dezember 2019)Und:
Mit 2.26 (Q1 2020) wurde der Beispiel-Helfer für Anmeldeinformationen für die Verwendung von .netrc aktualisiert, damit er sofort funktioniert.
Siehe Commit 6579d93 , Commit 1c78c78 (20. Dezember 2019) von Denton Liu (
Denton-L
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 1fd27f8 , 25. Dezember 2019)Jeff King (
peff
) fügt hinzu:quelle
curl -o c:\prgs\bin\git-credential-netrc https://raw.github.com/git/git/master/contrib/credential/netrc/git-credential-netrc
: Sie müssen diegit-credential-netrc
beliebige Stelle in Ihrem Pfad ($PATH
) kopieren , damit git 'credential-netrc
' aufrufen kann ._netrc
hat bei mir auf einemWindows 7
PC nicht funktioniert , aber das.netrc
hat bei youtube-dl mit dem--netrc
Argument funktioniert .https://raw.githubusercontent.com/git/git/master/contrib/credential/netrc/git-credential-netrc.perl
(Piping in sieben Jahren später 😉)Es gibt eine einfache, altmodische Möglichkeit, Benutzeranmeldeinformationen in einer HTTPS-URL zu speichern:
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 (
https://[email protected]/...
) eingeben, wodurch Sie mindestens die Hälfte des Aufwandes sparen.Möglicherweise möchten Sie lieber zu SSH wechseln oder die GitHub-Client-Software verwenden.
quelle
Verwenden Sie einen Anmeldeinformationsspeicher.
Verwenden Sie für Git 2.11+ unter OS X und Linux den in Git integrierten Anmeldeinformationsspeicher :
Für msysgit 1.7.9+ unter Windows :
Für Git 1.7.9+ unter OS X verwenden Sie:
quelle
git: 'credential-gnome-keyring' is not a git command. See 'git --help'.
printf "protocol=https\nhost=git.mycompany.com\n" | git credential-manager get
( weitere Details hier ). Sie sollten immer ein persönliches Zugriffstoken verwenden und natürlich 2FA in Ihrem GitHub-Konto verwenden.Sie können einfach verwenden
Wenn Sie das Kennwort das nächste Mal mit Pull oder Push eingeben, wird es in der Datei .git-credentials als einfacher Text gespeichert (etwas unsicher, aber legen Sie es einfach in einem geschützten Ordner ab).
Und das war's, wie auf dieser Seite angegeben:
git-credential-store
quelle
git config credential.helper manager
stattdessenMir war nicht sofort klar, dass ich zuerst den Helfer herunterladen musste! Ich habe den Download von credential.helper bei Atlassian gefunden. Permanente Authentifizierung bei Git-Repositorys .
Zitat:
Führen Sie die folgenden Schritte aus, wenn Sie Git mit Caching 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:
Legen Sie es in das Verzeichnis
/usr/local/bin
.Führen Sie den folgenden Befehl aus:
quelle
Fügen Sie einfach die Anmeldeinformationen als Teil der URL hinzu:
Hinweis: Ich empfehle diese Methode nicht, aber wenn Sie in Eile sind und nichts anderes funktioniert, können Sie diese Methode verwenden.
quelle
Auf einem GNU / Linux-Setup funktioniert ein ~ / .netrc auch ganz gut:
Dies kann davon abhängen, welche Netzwerkbibliotheken Git für den HTTPS- Transport verwendet.
quelle
chmod 0600 ~/.netrc
.Für Windows können Sie das GCM-Plugin ( Git Credential Manager ) verwenden. Es wird derzeit von Microsoft verwaltet. Das Schöne ist, dass das Kennwort im Windows Credential Store gespeichert wird und nicht als einfacher Text.
Auf der Release-Seite des Projekts befindet sich ein Installationsprogramm . Dadurch wird auch die offizielle Version von Git für Windows mit dem integrierten Anmeldeinformations-Manager installiert . Es ermöglicht die Zwei-Faktor-Authentifizierung für GitHub (und andere Server). Und hat eine grafische Oberfläche für die erstmalige Anmeldung.
Für Cygwin-Benutzer (oder Benutzer, die bereits das offizielle Git für Windows verwenden) bevorzugen Sie möglicherweise die manuelle Installation. Laden Sie das Zip-Paket von der Release-Seite herunter . Extrahieren Sie das Paket und führen Sie die
install.cmd
Datei aus. Dies wird in Ihrem~/bin
Ordner installiert . (Stellen Sie sicher, dass sich Ihr~/bin
Verzeichnis in Ihrem PFAD befindet.) Konfigurieren Sie es dann mit diesem Befehl:Git führt dann die
git-credential-manager.exe
Authentifizierung bei einem beliebigen Server aus.quelle
printf "protocol=https\nhost=git.mycompany.com\n" | git credential-manager get
( weitere Details hier ). Sie sollten immer ein persönliches Zugriffstoken verwenden und natürlich 2FA in Ihrem GitHub-Konto verwenden.Wenn Sie Ihr Passwort nicht wie von Mark angegeben im Klartext speichern möchten, können Sie zum Abrufen eine andere GitHub-URL verwenden als zum Pushen. In Ihrer Konfigurationsdatei unter
[remote "origin"]
:Beim Push wird weiterhin nach einem Kennwort gefragt, beim Abrufen jedoch nicht, zumindest bei Open Source-Projekten.
quelle
OAuth
Sie können Ihr eigenes persönliches API-Token ( OAuth ) erstellen und es genauso verwenden, wie Sie Ihre normalen Anmeldeinformationen verwenden würden (at :)
/settings/tokens
. Zum Beispiel:.netrc
Eine andere Methode besteht darin, Ihren Benutzer / Ihr Kennwort in zu konfigurieren
~/.netrc
(_netrc
unter Windows) , zFügen Sie für HTTPS die zusätzliche Zeile hinzu:
Ein Helfer für Anmeldeinformationen
Um Ihr GitHub-Passwort bei Verwendung von HTTPS in Git zwischenzuspeichern , können Sie einen Helfer für Anmeldeinformationen verwenden für , um Git anzuweisen, sich bei jeder Kommunikation mit GitHub Ihren GitHub-Benutzernamen und Ihr GitHub-Passwort zu merken.
git config --global credential.helper osxkeychain
(osxkeychain helper
ist erforderlich),git config --global credential.helper wincred
git config --global credential.helper cache
Verbunden:
quelle
Sie können Helfer für Anmeldeinformationen verwenden.
Wo
x
ist die Anzahl der Sekunden?quelle
store
, an demcache
und andere häufig vorkommende Dinge aufgelistet und erklärt werden?Nachdem Sie das Repository geklont haben
repo
, können Sie die folgenderepo/.git/config
Konfiguration bearbeiten und hinzufügen:Dann werden Sie nicht gefragt werden
username
undpassword
wieder.quelle
helper = manager
(aber ich werde beim ersten Push nach Benutzername + Repo gefragt).Ich weiß, dass dies keine sichere Lösung ist, aber manchmal benötigen Sie nur eine einfache Lösung - ohne etwas anderes zu installieren. Und da helper = store bei mir nicht funktioniert hat, habe ich einen Dummy-Helfer erstellt:
Erstellen Sie ein Skript und legen Sie es in den Ordner "bin" Ihres Benutzers, hier " credfake" genannt . Dieses Skript enthält Ihren Benutzernamen und Ihr Passwort:
mach es ausführbar:
dann konfiguriere es in git:
(oder verwenden Sie es ohne --global nur für das eine Repo)
und - voilá - git verwendet diesen Benutzer + Passwort.
quelle
Anstelle des Kontokennworts sollte ein Authentifizierungstoken verwendet werden. Gehen Sie zu GitHub-Einstellungen / -Anwendungen und erstellen Sie ein persönliches Zugriffstoken. Das Token kann genauso verwendet werden wie ein Passwort.
Das Token soll Benutzern ermöglichen, das Kontokennwort nicht für die Projektarbeit zu verwenden. Verwenden Sie das Kennwort nur bei Verwaltungsarbeiten, z. B. beim Erstellen neuer Token oder beim Widerrufen alter Token.
Anstelle eines Tokens oder Kennworts, das einem Benutzer vollständigen Zugriff auf ein GitHub-Konto gewährt, kann ein projektspezifischer Bereitstellungsschlüssel verwendet werden, um den Zugriff auf ein einzelnes Projektrepository zu gewähren. Ein Git-Projekt kann so konfiguriert werden, dass dieser andere Schlüssel in den folgenden Schritten verwendet wird, wenn Sie weiterhin mit Ihren normalen Anmeldeinformationen auf andere Git-Konten oder -Projekte zugreifen können:
Host
,IdentityFile
für den Einsatz Schlüssel, vielleichtUserKnownHostsFile
, und vielleicht dieUser
(obwohl ich Sie denken , brauchen sie nicht).ssh -F /path/to/your/config $*
GIT_SSH=/path/to/your/wrapper
vor Ihrem normalen Git-Befehl voran . Hier muss dergit remote
(Ursprung) das[email protected]:user/project.git
Format verwenden.quelle
Es ist besser, Anmeldeinformationen für die Sicherheit zu verwenden, aber Sie können sie einige Zeit über den Cache aufbewahren:
Ihre Anmeldeinformationen werden 3600 Sekunden lang gespeichert.
quelle
--timeout
und die Anmeldeinformationen werden für immer gespeichert.windowsservercore
)?Bei der Zwei-Faktor-Authentifizierung sieht es etwas anders aus wie ich . Da ich anderswo keine gute Antwort gefunden habe, werde ich eine hier festhalten, damit ich sie später vielleicht finden kann.
Wenn Sie die Zwei-Faktor-Authentifizierung verwenden, funktioniert die Angabe von Benutzername / Passwort nicht einmal - Ihnen wird der Zugriff verweigert. Sie können jedoch ein Anwendungszugriffstoken verwenden und den Anmeldeinformations-Helfer von Git verwenden, um das für Sie zwischenzuspeichern. Hier sind die relevanten Links:
Und ich erinnere mich nicht, wo ich das gesehen habe, aber wenn Sie nach Ihrem Benutzernamen gefragt werden, kleben Sie dort das Anwendungszugriffstoken. Lassen Sie dann das Passwort leer. Es hat auf meinem Mac funktioniert.
quelle
Das funktioniert bei mir, ich benutze Windows 10
quelle
Normalerweise haben Sie eine entfernte URL, so etwas wie
Wenn Sie Benutzername und Passwort während der Verwendung überspringen möchten
git push
, versuchen Sie Folgendes:Ich habe gerade dieselbe URL (mit Benutzerdetails einschließlich Passwort) zum Ursprung hinzugefügt.
HINWEIS: Es funktioniert nicht, wenn der Benutzername eine E-Mail-ID ist.
quelle
Ich habe meine Antwort von gitcredentials (7) Manual Page erhalten . In meinem Fall habe ich keinen Anmeldeinformations-Cache in meiner Windows-Installation. Ich benutze Credential-Store.
Nachdem ich den Anmeldeinformationsspeicher verwendet habe, werden der Benutzername / das Kennwort in der Datei [Benutzerordner] / .git-Anmeldeinformationen gespeichert. Um den Benutzernamen / das Passwort zu entfernen, löschen Sie einfach den Inhalt der Datei.
quelle
git config --global credential.helper wincred
das Kennwort dauerhaft in diesem Speicher zu speichern.In der Composer-Dokumentation wird erwähnt, dass Sie verhindern können, dass die GitHub-API verwendet wird, sodass sie wie folgt funktioniert
git clone
:Der Abschnitt würde also so aussehen:
Beachten Sie, dass die API aus einem bestimmten Grund vorhanden ist. Dies sollte also ein letzter Ausweg in Bezug auf die erhöhte Belastung von github.com sein.
quelle
Sie bearbeiten auch die bashrc- Datei und fügen ein Skript hinzu.
Dies würde beim Starten von Git einmal nach Ihrem Passwort fragen und es dann speichern, bis Sie sich abmelden.
quelle
Wenn Sie verwenden
osxkeychain
ein Token und es abgelaufen ist und es aktualisieren möchte, gehen Sie folgendermaßen vor:Führen Sie das Terminal aus und drücken Sie zweimal die Eingabetaste.
Jetzt sollten Sie aufgefordert werden, einen Benutzernamen / ein Passwort einzugeben. Manchmal scheint es jedoch so, als würde dies nicht "dauern" und Sie müssen immer wieder neu eintreten.
Wenn ja, starten Sie Ihren Computer neu . Wenn Sie das nächste Mal einen git-Befehl ausführen und Ihren Benutzernamen / Ihr Passwort eingeben, wird dieser gespeichert.
quelle