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?
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?
Antworten:
Ist es möglich, eine
.netrc
Datei unter Windows zu verwenden?
Ja, du musst:
%HOME%
(vor Git 2.0, wird mit Git 2.0+ nicht mehr benötigt)_netrc
Datei ein%HOME%
Wenn Sie Windows 7/10 verwenden, geben Sie in einer CMD
Sitzung Folgendes ein :
setx HOME %USERPROFILE%
und das %HOME%
wird auf ' C:\Users\"username"
' gesetzt.
Gehen Sie in diesen Ordner ( cd %HOME%
) und erstellen Sie eine Datei mit dem Namen ' _netrc
'
Hinweis: Für Windows benötigen Sie erneut eine ' _netrc
' Datei, keine ' .netrc
' Datei.
Der Inhalt ist Standard (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:
Mit der neuesten Version von msysgit unter Windows 7 musste ich die
HOME
Umgebungsvariable nicht festlegen . Die_netrc
Datei allein hat es geschafft.
Dies ist in der Tat das, was ich in " Versuch," install
"Github, .ssh
dir nicht da " erwähnt habe:
git-cmd.bat
In msysgit enthalten setzt die %HOME%
Umgebungsvariable:
@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 das http-Protokoll nicht funktioniert"
Ich habe jedoch geantwortet, dass netrc
das curl
HTTP-Protokoll verwendet wird und für dieses funktioniert, wie in diesem Beispiel gezeigt (suchen Sie auf netrc
der Seite nach ' ') :. Wird hier auch mit dem HTTP-Protokoll verwendet: " _netrc
/ .netrc
alternative tocURL
".
Eine gemeinsame Falle mit mit netrc
Unterstützung unter Windows ist, dass Git die Verwendung umgeht, wenn eine ursprüngliche https-URL einen Benutzernamen angibt.
Zum Beispiel, wenn Ihr .git/config
Datei enthält:
[entfernter "Ursprung"] fetch = + refs / heads / *: refs / remotes / origin / * url = https: //bob@code.google.com/p/my-project/
Git wird Ihre Anmeldeinformationen nicht über auflösen. _netrc
Um dies zu beheben, entfernen Sie Ihren Benutzernamen wie folgt :
[entfernter "Ursprung"] fetch = + refs / heads / *: refs / remotes / origin / * url = https://code.google.com/p/my-project/
Alternative Lösung: Mit Git-Version 1.7.9+ (Januar 2012): Diese Antwort von Mark Longair beschreibt den Cache-Mechanismus für Anmeldeinformationen, mit dem Sie Ihr Kennwort auch nicht wie unten gezeigt im Klartext speichern können.
Mit Git 1.8.3 (April 2013):
Sie können jetzt eine verschlüsselte .netrc (mit gpg
) verwenden.
Unter Windows: %HOME%/_netrc
( _
, nicht ' .
')
Ein neuer schreibgeschützter Helfer für Anmeldeinformationen (in
contrib/
) für die Interaktion mit den.netrc/.authinfo
Dateien wurde hinzugefügt.
Mit diesem Skript können Sie GPG-verschlüsselte Netrc-Dateien verwenden , um das Problem zu vermeiden, dass Ihre Anmeldeinformationen in einer Nur- Text-Datei gespeichert werden.
Dateien mit der
.gpg
Erweiterung 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
-f
Option angegeben ist.authinfo.gpg
,.netrc.gpg
werden.authinfo
,,, und.netrc
Dateien in Ihrem Home-Verzeichnis in dieser Reihenfolge verwendet.
So aktivieren Sie diesen Anmeldeinformations-Helfer:
git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2'
(Beachten Sie, dass Git
git-credential-
dem Namen des Helfers " " 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 zu überspringen?https:// github
"
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 786ef50 , Commit f07eeed (12. Mai 2018) von Luis Marsano (``) .
(Zusammengeführt von Junio C Hamano - gitster
- in Commit 017b7c5 , 30. Mai 2018)
git-credential-netrc
:gpg
Option akzeptieren
git-credential-netrc
wurde fest codiert, um mit 'gpg
' unabhängig von der Option gpg.program zu entschlüsseln .
Dies ist ein Problem bei Distributionen wie Debian, die das moderne GnuPG als etwas anderes bezeichnen, wie 'gpg2
'
http.proxy
in Ihrer Umgebung Variablen definieren. Oder im Gegenteil, Sie fügen Ihren Server einer no_proxy
Variablen hinzu, um zu vermeiden, dass Sie versuchen, über WAN auf einen LAN-Server zuzugreifen.
msysgit
Windows 7 musste ich die HOME
Umgebungsvariable nicht festlegen . Die _netrc
Datei allein hat es geschafft.
Sie können den Git Credential Manager für Windows auch installieren , um Git-Kennwörter anstelle des Windows Credentials Manager zu speichern _netrc
. Dies ist eine sicherere Methode zum Speichern von Kennwörtern.
.netrc
Datei speichern. Sie müssen diese Anmeldeinformationen nicht einmal während der Sitzung eingeben.
Dadurch kann sich Git unter HTTPS authentifizieren mit .netrc
:
_netrc
und sich in befinden c:\Users\<username>
.HOME=%USERPROFILE%
festlegen (systemweite Umgebungsvariablen mithilfe der Option System in der Systemsteuerung festlegen. Abhängig von der Windows-Version müssen Sie möglicherweise "Erweiterte Optionen" auswählen.)._netrc
Datei gespeicherte Kennwort darf keine Leerzeichen enthalten (das Angeben des Kennworts funktioniert nicht).Ich veröffentliche eine Möglichkeit zum _netrc
Herunterladen von Materialien von der Website www.course.com.
Wenn jemand das coursera-dl verwenden möchte, um die Materialien der offenen Klasse auf www.coursera.com herunterzuladen, und unter dem Windows-Betriebssystem möchte jemand eine Datei wie ".netrc" verwenden, die sich unter einem Unix-Betriebssystem befindet, um das hinzuzufügen Option -n
statt -U <username> -P <password>
für die Bequemlichkeit. Er / sie kann es so machen:
Überprüfen Sie den Home-Pfad unter Windows: setx HOME %USERPROFILE%
(siehe Antwort von VonC ). Die HOME
Umgebungsvariable wird als gespeichert C:\Users\"username"
.
Suchen Sie im 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>
Verwenden Sie einen Befehl coursera-dl -n --path PATH <course name>
, um die Klassenmaterialien herunterzuladen. Weitere Details zu coursera-dl-Optionen für diese Seite .
HOME
Umgebungsvariable ist wichtig, da sie unter Windows nicht standardmäßig definiert ist. Sie können diese Variable auf ein beliebiges Verzeichnis einstellen (es muss nicht seinC:\users\mylogin
): Bei der Arbeit habe ich sie beispielsweise auf meine private Remote-Festplatte festgelegt, die meinem Windows-Konto zugeordnet ist, sodass ich Desktops wechseln kann, ohne verlieren zu müssen meine.ssh
oder_netrc
Einstellungen.