git proxy curl ntlm

¿Funciona la clonación git a través de los proxies NTLM?



proxy curl (8)

La clonación funciona para mí, pero solo a través de HTTP (ya que nuestro firewall corporativo bloquea los protocolos ssh / git):

$ export http_proxy="http://username:password@proxy:port/" $ git clone http://github.com/sunlightlabs/fiftystates_site.git fifty Initialized empty Git repository in /home/user/fifty/.git/ got e15f5192b923d8e87abaeb9406d0f4d80403da09 walk e15f5192b923d8e87abaeb9406d0f4d80403da09 got a78b792191f1cf5e961753dcfe05e9c809bdb0ed got 76e6e86e72a0f998f7663da69ca49c457a302e27 walk 76e6e86e72a0f998f7663da69ca49c457a302e27 got 35b68a3b876fb90e73ba7a7eb51432e825ef2aa3 ...

Github sugiere la clonación a través de git://github.com/... pero debes cambiarla a http://github.com/... manualmente.

Editar: Estoy usando la versión de git 1.5.6.3.

¡Espero que ayude!

He intentado usar export http_proxy=http://[username]:[pwd]@[proxy] y git config --global http.proxy http://[username]:[pwd]@[proxy] .

No pude hacer que funcione. Parece que git usa autenticación básica:

Initialized empty Git repository in /home/.../.git/ * Couldn''t find host github.com in the .netrc file, using defaults * About to connect() to github.com port 8080 (#0) * Trying 10.... * Connected to github.com (10....) port 8080 (#0) * Proxy auth using Basic with user ''...'' > GET http://github.com/sunlightlabs/fiftystates.git/info/refs HTTP/1.1 Proxy-Authorization: Basic MD... User-Agent: git/1.6.1.2 Host: github.com Pragma: no-cache Accept: */* Proxy-Connection: Keep-Alive < HTTP/1.1 407 Proxy Authentication Required ( The ISA Server requires authorization to fulfill the request. Access to t he Web Proxy filter is denied. ) < Via: 1.1 ... < Proxy-Authenticate: Negotiate < Proxy-Authenticate: Kerberos < Proxy-Authenticate: NTLM < Connection: Keep-Alive < Proxy-Connection: Keep-Alive < Pragma: no-cache < Cache-Control: no-cache < Content-Type: text/html < Content-Length: 4118 * The requested URL returned error: 407 * Closing connection #0 fatal: http://github.com/sunlightlabs/fiftystates.git/info/refs download error - The requested URL returned error: 407

La búsqueda de Google arrojó resultados mixtos y probablemente no actualizados. En algún lugar dice que el curl se usa (¿se?) Bajo el capó, pero sus opciones están (¿estaban?) Cableadas en el código. Por ejemplo,

curl --proxy-ntlm --proxy ...:8080 google.com

funciona, y me gustaría usar la misma opción con git.

Necesito algunas respuestas más precisas aquí: ¿Alguien ha tenido éxito usando git a través de los proxies de Windows? ¿Cual version?

Gracias.


AndreaG (en un comentario anterior) tiene la única respuesta aceptable a este problema que puedo encontrar. Parece que Git no funcionará con los proxys NTLM aunque realmente debería hacerlo porque cURL (que usa debajo) funciona bien. Por qué este problema no se puede arreglar No tengo ni idea. Parece ser un problema bastante común.

La solución, en su totalidad, es usar ntlmaps para actuar como un proxy para el proxy. Todo lo que necesita hacer es descargar la última versión de la aplicación desde: http://ntlmaps.sourceforge.net/

Cambie el archivo de configuración para incluir su autenticación y detalles de proxy y luego configure el proxy como su nuevo local:

git config --global http.proxy http://localhost:5865

Puedo confirmar que funciona bien. No solo puede usarlo para cualquier aplicación que requiera autenticación NTLM, sino que no proporcione soporte NTLM completo.



También puedes usar cntlm,

http://cntlm.sourceforge.net/

Una solución similar a ntlmaps pero escrita en C. puro. Funciona de la misma manera que ntlmaps al crear un servidor proxy local (127.0.0.1) en un puerto (predeterminado 3128) en su máquina. Este nuevo servidor proxy creado localmente no requiere ninguna autenticación y, por lo tanto, se puede usar con cualquier aplicación que admita http proxy. También puede crear un proxy de calcetines local si lo necesita.

La principal ventaja sobre ntlmaps que está escrita en python, es que cntlm tiene muy poco uso de CPU y RAM, típicamente <2%.


Como esta era una pregunta que seguí buscando en mi búsqueda para que esto funcione, agregaré mi respuesta aquí.

Necesitaba tener acceso a un repositorio hospedado de github.com que funcionaba a través de un http (s) proxy (que requiere autenticación NTLM) en una red, y que aún funcione cuando se está en una conexión normal a Internet, desde nuestras máquinas de desarrollo Mac OS X.

Así es como lo hice funcionar. Esto no funcionará para todos los proveedores de hospedaje de git, pero estoy publicando en caso de que te ayude a resolver esto. Esto también es solo para Mac OS X, pero si descubres cómo ejecutar algo en el cambio de red para tu sistema, el resto debería seguir.

Tuve que usar git clone [email protected]:user/repo.git después de configurar el acceso de ssh de forma normal (http://help.github.com/mac-set-up-git/).

Luego tuve que configurar un proxy http (s) local que maneja la autenticación NTLM, como ntlmaps, cntlm o Authoxy. Lo he probado con Authoxy. Dejaré de configurar esto para usted, porque necesitará conocer sus propios datos de proxy.

También necesitarás un sacacorchos, que es solo un sudo port install corkscrew si tienes MacPorts.

Luego agregué lo siguiente a ~/.ssh/config :

Host github.com.disabled User git HostName ssh.github.com Port 443 ProxyCommand /opt/local/bin/corkscrew localhost 6574 %h %p

Donde 6574 es el puerto TCP, establezco Authoxy para escuchar.

Ahora creé un script que intenta encontrar el servidor proxy de http (s) y configura la configuración de ssh de acuerdo con lo que encuentra en /usr/local/bin/locationchanger :

#!/bin/sh set -o nounset set -o errexit sleep 10 # allow for WiFi to actually connect. # if we can find the proxy server, then use it. if ! host proxy.internal.network; then echo "Proxy server not found, clearing http(s) proxy"; sed -i ''.backup'' -E ''s/^Host github.com$/Host github.com.disabled/'' "$HOME/.ssh/config" else echo "Proxy server found, setting http(s) proxy"; sed -i ''.backup'' -E ''s/^Host github.com.disabled$/Host github.com/'' "$HOME/.ssh/config" fi echo "Done."

No te olvides de chmod +x /usr/local/bin/locationchanger .

Ahora crea ~/Library/LaunchAgents/LocationChanger.plist :

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>tech.inhelsinki.nl.locationchanger</string> <key>ProgramArguments</key> <array> <string>/usr/local/bin/locationchanger</string> </array> <key>WatchPaths</key> <array> <string>/Library/Preferences/SystemConfiguration</string> </array> </dict> </plist>

Y luego launchctl load ~/Library/LaunchAgents/LocationChanger.plist . Este trabajo de lanzamiento se ejecutará cada vez que la red cambie. Si puede encontrar el servidor proxy de su red interna http (s), hará que ssh use sacacorchos para funcionar a través de Authoxy, que se encargará de trabajar a través del proxy de la compañía. Si no puede encontrar el servidor proxy, deshabilitará la configuración especial de ssh y estará funcionando como siempre.

Ahora nuestro equipo ya no tiene que pensar en el cambio de red.


Git admite la autenticación de proxy NTLM a partir de la versión 1.7.10 , la confirmación relevante es https://github.com/gitster/git/commit/dd6139971a18e25a5089c0f96dc80e454683ef0b

1.7.10 notas de la versión lo mencionaron brevemente como:

* HTTP transport learned to authenticate with a proxy if needed.

Lo probé con éxito con el proxy en mi lugar de trabajo, que es NTLM y requiere usuario / pase, puede probarse con los siguientes comandos:

git config --global http.proxy http://user:[email protected]:port git clone http://git.videolan.org/git/bitstream.git

Saludos,


Credenciales NTLM predeterminadas

Para usar credenciales NTLM predeterminadas, proporcione un nombre de usuario y contraseña vacíos

git config --global http.proxy https://:@proxy:port

Cliente de firewall para servidor ISA

En lugar de establecer un proxy para git, npm, etc., puede usar Firewall Client para el servidor ISA de Microsoft. Después de la instalación:

Start > Autostart > Microsoft Firewall Client Management

Settings tab > Manual specified ISA Server > proxy:port Web Browser tab > Uncheck "Enable web browser automatic configuration."


TL / DR:

export GIT_HTTP_PROXY_AUTHMETHOD=basic

o

git config --global http.proxyauthmethod basic

Tuve el mismo problema cuando git (curl) proxy auth no funcionó. Las credenciales eran correctas. Actualizar a la última git-v2.15.0 no ayudó.

El problema se debió al método de autenticación de proxy incorrecto elegido por git-libcurl.

Las opciones válidas de proxy_authmethod se definen en la fuente de git: https://github.com/git/git/blob/d0e9983980a25e0c398cc03342e5ad22ef85b8a8/http.c#L81

El método proxyauth se puede definir a través de la variable de entorno http.proxyauthmethod o la opción http.proxyauthmethod git config. La variable de entorno anula el valor de la opción de configuración.