Configurar Git en Windows para utilizar la autenticación proxy NTLM
msysgit (4)
Estoy intentando acceder a un repositorio en Github desde una máquina de Windows que está detrás de un proxy que requiere autenticación NTLM. Ni SSH ni el protocolo git: // están disponibles directamente, por lo que estoy tratando de hacer que esto funcione con HTTPS a través del proxy.
Con la ayuda del proxy NTLM sin contraseña? Pude hacer que el curl
binario suministrado con msysgit fuera agradable con el proxy:
curl -U : --proxy-ntlm --proxy xxx.xxx.xx.xx:8080 https://github.com
Esto es exitoso y devuelve la página de inicio de Github.
Sin embargo, encontré un artículo de febrero de 2010 Proxying Git que dice (el énfasis es mío):
Desafortunadamente, parece que Curl siempre usará autenticación básica con el proxy. Si su proxy necesita algo más, tal vez NTLM para una red de Windows, entonces tiene un problema . Curl se utiliza para manejar todos los detalles de transporte http y esto admite el método de autenticación NTLM, pero no conozco ningún método para pasar las opciones necesarias para curl. Git hace uso de curl a través de su enlace de biblioteca, por lo que no es suficiente reemplazar el ejecutable Curl con un script de envoltura.
Conozco la opción core.gitproxy
en la configuración de Git, pero parece que solo se aplica al protocolo git: //. Del mismo modo, la opción http.proxy
establece la dirección del proxy, pero no proporciona ninguna forma de proporcionar las opciones adecuadas para curl.
Prueba Cntlm . Es un proxy diseñado para ubicarse entre un programa que no comprende NTLM (por ejemplo, Git) y un proxy que requiere NTLM. Hace la autenticación NTLM para que la aplicación no tenga que hacerlo.
No lo he usado, así que no sé qué tan bien funciona.
Gracias por @ richard-hansen por señalar Cntlm. Proporciona un adaptador que no es de Windows para el proxy de Windows. Muy aseado.
Aquí están los pasos exactos que funcionaron para mí:
- Descargue e instale Cntlm para Windows.
- Abra Cntlm.ini (está en la carpeta de instalación).
- Actualizar nombre de usuario, dominio. Guárdalo
- Ejecute
cntlm -I -M http://google.com
desde la línea de comandos. - Cntlm le preguntará la contraseña que usará para el servidor proxy. Darle. (Lo más probable es que sea su contraseña de Windows)
- Cntlm identificará el método de autenticación y generará una clave. Recoge ese resultado. (por ejemplo, NTLMv2 77B9081511704EE852F94227CF48A793)
- Actualiza Cntlm.ini con esta información. (Descomente la autenticación adecuada y actualice la clave)
- Guardar y cerrar.
- Ahora necesita iniciar el servidor proxy Cntlm.
net start cntlm
- Ahora actualice la aplicación con la información del proxy Cntlm. Para Cntlm es, 127.0.0.1:3128 (Esta información está en archivo ini. Si la quiere diferente, cámbiela allí). En caso de
git config --global http.proxy 127.0.0.1:3128
de gitgit config --global http.proxy 127.0.0.1:3128
- git debería funcionar bien a través del proxy ahora.
¡Buena suerte! Elabora los pasos aquí .
Utilicé el proxy de autenticación CNTLM (aunque probablemente también funcionaría para ntlmaps), así que git podría funcionar y agregar el proxy http y https como http:// localhost:3218
. Git tardaría mucho tiempo en realizar acciones remotas como buscar, tirar o clonar.
La solución para esto fue cambiar para usar esto en su lugar: http:// 127.0.0.1:3218
Después de que esto se cambió en .gitconfig, funcionó mucho más rápido.
NB: elimine los espacios entre http: // y 127.0.0.1
Ex:
[http] proxy = http:// 127.0.0.1:3128 [https] proxy = http:// 127.0.0.1:3128
Con mysysgit 1.9.5 (o quizás versiones anteriores también, pero no probadas) puede hacerlo sin incrustar nombre de usuario y contraseña en el archivo de configuración de texto sin formato en el disco.
git cliente que usa GSSAPI para autenticación proxy NTLM
Y esto no requiere cntlm.