it-swarm.com.de

Git - Verwendung der .netrc-Datei unter Windows zum Speichern von Benutzernamen und Kennwörtern

Ist es möglich, eine .netrc-Datei unter Windows zu verwenden, wenn ich Git verwende, um ein Remote-Repository mit HTTP und Benutzerpasswort zu klonen?

166
Bernd Klaus

Kann ich unter Windows eine .netrc - Datei verwenden?

Ja, du musst:

  • definiere Umgebungsvariable %HOME% (Pre-Git 2.0, wird ab Git 2.0 nicht mehr benötigt)
  • lege eine _netrc Datei in %HOME%

Wenn Sie Windows 7/10 verwenden, geben Sie in einer CMD Sitzung Folgendes ein:

setx HOME %USERPROFILE%

und der %HOME% wird auf 'C:\Users\"username"' gesetzt.
Gehen Sie in diesen Ordner (cd %HOME%) Und erstellen Sie eine Datei mit dem Namen '_netrc'

Hinweis: Auch für Windows benötigen Sie eine '_netrc' - Datei, nicht eine '.netrc' - Datei.

Sein Inhalt ist ganz normal (Ersetzen Sie den <examples> Durch Ihre Werte):

machine <hostname1>
login <login1>
password <password1>
machine <hostname2>
login <login2>
password <password2>

Luke erwähnt in den Kommentaren:

Bei Verwendung der neuesten Version von msysgit unter Windows 7 musste die Umgebungsvariable HOME nicht festgelegt werden. Die _netrc - Datei allein hat den Trick gemacht.

Dies ist in der Tat, was ich in " Versucht zu" install "Github, .ssh Dir nicht da " erwähnt:
git-cmd.bat in msysgit setzt die Umgebungsvariable %HOME%:

@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH%
@if not exist "%HOME%" @set HOME=%USERPROFILE%

爱国者 glaubt an die Kommentare, dass "es scheint, dass es für http-Protokoll nicht funktioniert"

Ich antwortete jedoch, dass netrc von curl verwendet wird und für das HTTP-Protokoll funktioniert (siehe dieses Beispiel (siehe 'netrc'). auf der Seite):. Auch hier mit HTTP-Protokoll verwendet: " _netrc/.netrc Alternative zu cURL ".


Eine häufige Falle bei der Unterstützung von netrc unter Windows ist, dass Git diese umgeht, wenn eine Origin-https-URL einen Benutzernamen angibt.

Zum Beispiel, wenn Ihre .git/config - Datei enthält:

 [remote "Origin"] 
 fetch = + refs/heads/*: refs/remotes/Origin /*
 url = https: //[email protected] /p/my-project/

Git wird Ihre Anmeldeinformationen nicht über _netrc Auflösen. Um dies zu beheben, entfernen Sie Ihren Benutzernamen wie folgt:

 [remote "Origin"] 
 fetch = + refs/heads/*: refs/remotes/Origin /*
 url = https://code.google.com/p /Mein Projekt/

Alternative Lösung: Mit git Version 1.7.9 + (Januar 2012): Diese Antwort von Mark Longair beschreibt den Mechanismus des Credential Cache welcher also Ihnen erlaubt nicht Speichern Sie Ihr Passwort im Klartext wie unten gezeigt.


Mit Git 1.8. (April 2013):

Sie können jetzt ein verschlüsseltes .netrc (mit gpg) verwenden.
Unter Windows: %HOME%/_netrc (_, Nicht '.')

Ein neuer schreibgeschützter Berechtigungsnachweis-Helfer (in contrib/), Um mit dem .netrc/.authinfo Dateien wurden hinzugefügt.

Mit diesem Skript können Sie gpg-verschlüsselte Netrc-Dateien verwenden und vermeiden, dass Ihre Anmeldeinformationen in einer Nur-Text-Datei gespeichert werden.

Dateien mit der Erweiterung .gpg Werden vor dem Parsen von GPG entschlüsselt.
Mehrere -f Argumente sind in Ordnung. Sie werden der Reihe nach verarbeitet, und der erste gefundene übereinstimmende Eintrag wird über das Hilfsprotokoll für Anmeldeinformationen zurückgegeben.

Wenn keine Option -f Angegeben ist, werden die Dateien .authinfo.gpg, .netrc.gpg, .authinfo Und .netrc In Ihrem Ausgangsverzeichnis in dieser Reihenfolge verwendet .

So aktivieren Sie diesen Hilfsprogramm für Anmeldeinformationen:

git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2'

(Beachten Sie, dass Git dem Helfernamen "git-credential-" Voranstellt und im Pfad danach sucht.)

# and if you want lots of debugging info:
git config credential.helper '$shortname -f AUTHFILE -d'

#or to see the files opened and data found:
git config credential.helper '$shortname -f AUTHFILE -v'

Ein vollständiges Beispiel finden Sie unter " Gibt es eine Möglichkeit, die Kennworteingabe bei Verwendung von https:// github Zu überspringen? "


Mit Git 2.18+ (Juni 2018) können Sie jetzt das GPG-Programm anpassen, mit dem die verschlüsselte .netrc - Datei entschlüsselt wird.

Siehe commit 786ef5 , commit f07eeed (12. Mai 2018) von Luis Marsano (``) .
(Zusammengeführt von Junio ​​C Hamano - gitster - in Festschreiben 017b7c5 , 30. Mai 2018)

git-credential-netrc: Akzeptiere die Option gpg

git-credential-netrc Wurde unabhängig von der Option gpg.program fest mit 'gpg' entschlüsselt.
Dies ist ein Problem bei Distributionen wie Debian, die modernes GnuPG als etwas anderes bezeichnen, wie 'gpg2'

192
VonC

Sie können auch Git Credential Manager für Windows installieren, um Git-Kennwörter im Windows-Anmeldeinformations-Manager anstelle von _netrc Zu speichern. Dies ist eine sicherere Methode zum Speichern von Kennwörtern.

34
KindDragon

Dadurch kann Git sich bei HTTPS mit .netrc Authentifizieren:

  • Die Datei sollte den Namen _netrc Haben und sich in c:\Users\<username> Befinden.
  • Sie müssen eine Umgebungsvariable mit dem Namen HOME=%USERPROFILE% Festlegen (Systemweite Umgebungsvariablen mithilfe der Option System in der Systemsteuerung festlegen. Je nach Windows-Version müssen Sie möglicherweise "Erweiterte Optionen" auswählen.).
  • Das in der Datei _netrc Gespeicherte Kennwort darf keine Leerzeichen enthalten (das Anführen des Kennworts funktioniert nicht).
9
EBlake

Ich poste eine Möglichkeit, mit _netrc Materialien von der Website www.course.com herunterzuladen.

Wenn jemand das coursera-dl zum Herunterladen der Open-Class-Materialien auf www.coursera.com verwendet und unter Windows eine Datei wie ".netrc" verwenden möchte, die sich unter dem Betriebssystem "like-Unix" befindet, um die Datei hinzuzufügen Option -n anstelle von -U <username> -P <password> zur Vereinfachung. Er/sie kann es so machen:

  1. Überprüfen Sie den Startpfad unter Windows: setx HOME %USERPROFILE% (Siehe VonCs Antwort ). Die Umgebungsvariable HOME wird als C:\Users\"username" Gespeichert.

  2. Suchen Sie in das Verzeichnis C:\Users\"username" Und erstellen Sie einen Dateinamen _netrc. HINWEIS: Es gibt KEIN Suffix. Der Inhalt ist wie folgt: machine coursera-dl login <user> password <pass>

  3. Verwenden Sie einen Befehl wie coursera-dl -n --path PATH <course name>, Um die Klassenmaterialien herunterzuladen. Weitere Details zu den coursera-dl-Optionen für diese Seite .

1
BO.LI