È possibile utilizzare un file .netrc su Windows quando sto usando Git per clonare un repository remoto con HTTP e password utente?
È possibile utilizzare un file .netrc su Windows quando sto usando Git per clonare un repository remoto con HTTP e password utente?
Risposte:
È possibile utilizzare un
.netrc
file su Windows?
Si, devi:
%HOME%
(pre-Git 2.0, non più necessaria con Git 2.0+)_netrc
file%HOME%
Se si utilizza Windows 7/10, in una CMD
sessione digitare:
setx HOME %USERPROFILE%
e il %HOME%
sarà impostato su ' C:\Users\"username"
'.
Vai quella cartella ( cd %HOME%
) e crea un file chiamato ' _netrc
'
Nota: ancora una volta, per Windows, è necessario un ' _netrc
' file, non un ' .netrc
' file.
Il suo contenuto è abbastanza standard (Sostituisci <examples>
con i tuoi valori):
machine <hostname1>
login <login1>
password <password1>
machine <hostname2>
login <login2>
password <password2>
Luca menziona nei commenti:
Usando l'ultima versione di msysgit su Windows 7, non avevo bisogno di impostare la
HOME
variabile d'ambiente. Il_netrc
file da solo ha funzionato.
Questo è davvero ciò che ho menzionato in " Cercando di" install
"github, .ssh
dir non lì ":
git-cmd.bat
incluso in msysgit imposta la %HOME%
variabile d'ambiente:
@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH%
@if not exist "%HOME%" @set HOME=%USERPROFILE%
爱国者 crede nei commenti che "sembra che non funzionerà per il protocollo http"
Tuttavia, ho risposto che netrc
è utilizzato da curl
e funziona per il protocollo HTTP, come mostrato in questo esempio (cercare ' netrc
' nella pagina):. Utilizzato anche con il protocollo HTTP qui: " _netrc
/ .netrc
alternativa acURL
".
Una trappola comune con netrc
supporto su Windows è che git ignorerà l'utilizzo se un URL https di origine specifica un nome utente.
Ad esempio, se il tuo .git/config
file contiene:
["origine" remota] fetch = + refs / heads / *: refs / telecomandi / origin / * url = https: //bob@code.google.com/p/my-project/
Git non risolverà le tue credenziali tramite _netrc
, per risolvere questo rimuovere il tuo nome utente, in questo modo:
["origine" remota] fetch = + refs / heads / *: refs / telecomandi / origin / * url = https://code.google.com/p/my-project/
Soluzione alternativa: con git versione 1.7.9+ (gennaio 2012): questa risposta di Mark Longair descrive in dettaglio il meccanismo della cache delle credenziali che consente anche di non archiviare la password in testo semplice, come mostrato di seguito.
Con Git 1.8.3 (aprile 2013):
Ora puoi usare un .netrc crittografato (con gpg
).
Su Windows: %HOME%/_netrc
( _
, non ' .
')
È stato aggiunto un nuovo helper di credenziali di sola lettura (in
contrib/
) per interagire con i.netrc/.authinfo
file.
Quello script ti permetterebbe di usare file netrc crittografati con gpg , evitando il problema di avere le tue credenziali archiviate in un semplice file di testo.
I file con
.gpg
estensione verranno decifrati da GPG prima dell'analisi. Argomenti
multipli-f
sono OK. Vengono elaborati in ordine e la prima voce corrispondente trovata viene restituita tramite il protocollo helper delle credenziali.Quando nessuna
-f
opzione è data,.authinfo.gpg
,.netrc.gpg
,.authinfo
, e.netrc
file nella vostra home directory sono utilizzati in questo ordine.
Per abilitare questo supporto credenziali:
git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2'
(Nota che Git anteporrà "
git-credential-
" al nome dell'helper e lo cercherà nel percorso.)
# 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'
Vedi un esempio completo in " Esiste un modo per saltare la digitazione della password quando si utilizzahttps:// github
"
Con Git 2.18+ (giugno 2018), ora puoi personalizzare il programma GPG utilizzato per decrittografare il .netrc
file crittografato .
Vedi commit 786ef50 , commit f07eeed (12 maggio 2018) di Luis Marsano (``) .
(Unita da Junio C Hamano - gitster
- in commit 017b7c5 , 30 maggio 2018)
git-credential-netrc
: accetta l'gpg
opzione
git-credential-netrc
è stato codificato per decrittografare con "gpg
" indipendentemente dall'opzione gpg.program.
Questo è un problema su distribuzioni come Debian che chiamano GnuPG moderno qualcos'altro, come 'gpg2
'
http.proxy
nelle variabili di ambiente. O, al contrario, per aggiungere il server a una no_proxy
variabile, per evitare di tentare di accedere a un server LAN tramite WAN.
msysgit
Windows 7, non avevo bisogno di impostare la HOME
variabile d'ambiente. Il _netrc
file da solo ha funzionato.
È inoltre possibile installare Git Credential Manager per Windows per salvare le password Git in Gestione credenziali di Windows anziché _netrc
. Questo è un modo più sicuro per archiviare le password.
.netrc
file crittografato . Non dovrai inserire tali credenziali nemmeno una volta durante la sessione.
Ciò consentirà a Git di autenticarsi su HTTPS usando .netrc
:
_netrc
e situato in c:\Users\<username>
.HOME=%USERPROFILE%
(impostare le variabili d'ambiente a livello di sistema usando l'opzione Sistema nel pannello di controllo. A seconda della versione di Windows, potrebbe essere necessario selezionare "Opzioni avanzate")._netrc
file non può contenere spazi (la citazione della password non funzionerà).Sto pubblicando un modo per utilizzare _netrc
per scaricare materiali dal sito www.course.com.
Se qualcuno utilizzerà il file coursera-dl per scaricare i materiali di classe aperta su www.coursera.com e sul sistema operativo Windows qualcuno desidera utilizzare un file come ".netrc" che si trova nel sistema operativo simile a Unix per aggiungere il opzione -n
anziché -U <username> -P <password>
per comodità. Lui / lei può farlo in questo modo:
Controlla il percorso principale sul sistema operativo Windows: setx HOME %USERPROFILE%
( fai riferimento alla risposta di VonC ). Salverà la HOME
variabile d'ambiente come C:\Users\"username"
.
Individua nella directory C:\Users\"username"
e crea un nome file _netrc
. NOTA: NON è presente alcun suffisso.
il contenuto è come:machine coursera-dl login <user> password <pass>
Utilizzare un comando come coursera-dl -n --path PATH <course name>
per scaricare i materiali della classe. Ulteriori dettagli sulle opzioni coursera-dl per questa pagina .
HOME
variabile d'ambiente è importante, perché non è definita di default su Windows. Puoi impostare quella variabile su qualunque directory tu voglia (non deve essereC:\users\mylogin
): ad esempio, al lavoro, l'ho impostata sul mio disco remoto privato associato al mio account di Windows, che mi permette di cambiare desktop senza perdere mio.ssh
o_netrc
impostazioni.