¿Es posible usar un archivo .netrc en Windows cuando estoy usando Git para clonar un repositorio remoto con HTTP y contraseña de usuario?
fuente
¿Es posible usar un archivo .netrc en Windows cuando estoy usando Git para clonar un repositorio remoto con HTTP y contraseña de usuario?
¿Es posible usar un
.netrcarchivo en Windows?
Si, debes:
%HOME%(pre-Git 2.0, ya no es necesario con Git 2.0+)_netrcarchivo en%HOME%Si está utilizando Windows 7/10, en una CMDsesión, escriba:
setx HOME %USERPROFILE%
y %HOME%se establecerá en ' C:\Users\"username"'.
Ve a esa carpeta ( cd %HOME%) y crea un archivo llamado ' _netrc'
Nota: Nuevamente, para Windows, necesita un _netrcarchivo ' ', no un .netrcarchivo ' '.
Su contenido es bastante estándar (Reemplace el <examples>con sus valores):
machine <hostname1>
login <login1>
password <password1>
machine <hostname2>
login <login2>
password <password2>
Lucas menciona en los comentarios:
Utilizando la última versión de msysgit en Windows 7, no necesitaba configurar la
HOMEvariable de entorno. El_netrcarchivo solo hizo el truco.
Esto es de hecho lo que mencioné en " Intentando" install"github, .sshdir no allí ":
git-cmd.batincluido en msysgit establece la %HOME%variable de entorno:
@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH%
@if not exist "%HOME%" @set HOME=%USERPROFILE%
爱国者 cree en los comentarios que "parece que no funcionará para el protocolo http"
Sin embargo, respondí que netrces utilizado por curl, y funciona para el protocolo HTTP, como se muestra en este ejemplo (busque ' netrc' en la página):. También se utiliza con el protocolo HTTP aquí: " _netrc/ .netrcalternativa acURL ".
Una trampa común con netrcsoporte en Windows es que git omitirá su uso si una URL https de origen especifica un nombre de usuario.
Por ejemplo, si su .git/configarchivo contiene:
["origen" remoto]
fetch = + refs / heads / *: refs / remotes / origin / *
url = https: //[email protected]/p/my-project/
Git no resolverá sus credenciales a través de _netrc, para solucionar esto elimine su nombre de usuario, de esta manera:
["origen" remoto]
fetch = + refs / heads / *: refs / remotes / origin / *
url = https://code.google.com/p/my-project/
Solución alternativa: con git versión 1.7.9+ (enero de 2012): esta respuesta de Mark Longair detalla el mecanismo de caché de credenciales que también le permite no almacenar su contraseña en texto sin formato como se muestra a continuación.
Con Git 1.8.3 (abril de 2013):
Ahora puede usar un .netrc cifrado (con gpg).
En Windows: %HOME%/_netrc( _, no ' .')
Se ha agregado una nueva ayuda de credencial de solo lectura (in
contrib/) para interactuar con los.netrc/.authinfoarchivos.
Ese script le permitiría usar archivos netrc cifrados con gpg , evitando el problema de tener sus credenciales almacenadas en un archivo de texto sin formato.
.gpgGPG descifrará los archivos con la extensión antes de analizarlos.
Múltiples-fargumentos están bien. Se procesan en orden, y la primera entrada coincidente encontrada se devuelve a través del protocolo auxiliar de credenciales.Cuando no
-fse le da la opción,.authinfo.gpg,.netrc.gpg,.authinfo, y.netrclos archivos en el directorio de inicio se utilizan en este orden.
Para habilitar este asistente de credenciales:
git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2'
(Tenga en cuenta que Git antepondrá "
git-credential-" al nombre del ayudante y lo buscará en la ruta).
# 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'
Vea un ejemplo completo en " ¿Hay alguna manera de omitir la escritura de contraseñas al usarhttps:// github "
Con Git 2.18+ (junio de 2018), ahora puede personalizar el programa GPG utilizado para descifrar el .netrcarchivo cifrado .
Ver commit 786ef50 , commit f07eeed (12 de mayo de 2018) por Luis Marsano (``) .
(Fusionada por Junio C Hamano - gitster- en commit 017b7c5 , 30 de mayo de 2018)
git-credential-netrc: aceptargpgopción
git-credential-netrcfue codificado para descifrar con 'gpg' independientemente de la opción gpg.program.
Este es un problema en distribuciones como Debian que llaman a GnuPG moderno algo más, como 'gpg2'
HOMEvariable de entorno es importante porque no está definida por defecto en Windows. Puede configurar esa variable en el directorio que desee (no tiene que serloC:\users\mylogin): por ejemplo, en el trabajo, lo configuro en mi disco remoto privado asociado con mi cuenta de Windows, lo que me permite cambiar de escritorio sin tener que perder mi.ssho_netrcconfiguración.http.proxyen sus variables de entorno. O, por el contrario, para agregar su servidor a unano_proxyvariable, para evitar intentar acceder a un servidor LAN a través de WAN.msysgitWindows 7, no necesitaba configurar laHOMEvariable de entorno. El_netrcarchivo solo hizo el truco.También puede instalar Git Credential Manager para Windows para guardar las contraseñas de Git en el administrador de credenciales de Windows en lugar de
_netrc. Esta es una forma más segura de almacenar contraseñas.fuente
.netrcarchivo cifrado . No tendrá que ingresar esas credenciales ni una sola vez durante la sesión.Esto permitirá que Git se autentique en HTTPS usando
.netrc:_netrcy ubicado enc:\Users\<username>.HOME=%USERPROFILE%(establecer variables de entorno de todo el sistema utilizando la opción Sistema en el panel de control. Dependiendo de la versión de Windows, es posible que deba seleccionar "Opciones avanzadas")._netrcarchivo no puede contener espacios (citar la contraseña no funcionará).fuente
Estoy publicando una forma de usar
_netrcpara descargar materiales del sitio www.course.com.Si alguien va a usar el coursera-dl para descargar los materiales de clase abierta en www.coursera.com, y en el sistema operativo Windows alguien quiere usar un archivo como ".netrc" que está en el sistema operativo Unix para agregar el opción en
-nlugar de-U <username> -P <password>por conveniencia. Él / ella puede hacerlo así:Verifique la ruta de inicio en el sistema operativo Windows:
setx HOME %USERPROFILE%(consulte la respuesta de VonC ). Guardará laHOMEvariable de entorno comoC:\Users\"username".Localice en el directorio
C:\Users\"username"y cree un nombre de archivo_netrc. NOTA: NO hay ningún sufijo. el contenido es como:machine coursera-dl login <user> password <pass>Use un comando como
coursera-dl -n --path PATH <course name>para descargar los materiales de la clase. Más detalles sobre las opciones de coursera-dl para esta página .fuente