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

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

No podría hacerlo funcionar. Parece que git usa authentication 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 Requinetworking ( 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.

Git admite la authentication 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 commands:

 git config --global http.proxy http://user:password@proxy.com:port git clone http://git.videolan.org/git/bitstream.git 

Saludos,

Cnetworkingenciales NTLM pnetworkingeterminadas

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

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

Cliente de firewall para server ISA

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

Start > Autostart > Microsoft Firewall Client Management

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

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!

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 download la última versión de la aplicación desde: http://ntlmaps.sourceforge.net/

Cambie el file de configuration para include su authentication 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 authentication 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 server proxy local (127.0.0.1) en un puerto (pnetworkingeterminado 3128) en su máquina. Este nuevo server proxy creado localmente no requiere ninguna authentication 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%.

He estado usando ntlmaps y he obtenido buenos resultados al get los proxies de Windows / NT: http://ntlmaps.sourceforge.net/

La configuration de git es:

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

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 repository hospedado de github.com que funcionaba a través de un http (s) proxy (que requiere authentication NTLM) en una networking, y que aún funcione cuando se está en una connection 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 networking para tu sistema, el rest debería seguir.

Tuve que usar git clone git@github.com: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 authentication 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 server proxy de http (s) y configura la configuration 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 networking cambie. Si puede encontrar el server proxy de su networking interna http (s), hará que ssh use sacacorchos para trabajar a través de Authoxy, que se encargará de trabajar a través del proxy de la compañía. Si no puede encontrar el server proxy, deshabilitará la configuration especial de ssh y estará funcionando como siempre.

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

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 cnetworkingenciales eran correctas. Actualizar a la última git-v2.15.0 no ayudó.

El problema se debió al método de authentication 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 configuration.