2009-01-30 14 views
44

Tengo msysGit (Git en Windows) funcionando bien en mi máquina doméstica, pero en el trabajo, donde estamos detrás de un proxy de Microsoft ISA, me sale el siguiente error cuando hago un clon de git:Error de Git: fatal: no se puede conectar un socket (argumento no válido)

H:\>git clone git://github.com/akitaonrails/vimfiles.git 
Initialized empty Git repository in H:/vimfiles/.git/ 
github.com[0: 65.74.177.129]: errno=Invalid argument 
fatal: unable to connect a socket (Invalid argument) 

he tratado de establecer la variable de entorno a http_proxy:

http://our-proxy-server:8088 

he establecido la directiva de configuración http.proxy git:

git config --global http.proxy http://our-proxy-server:8088 

Ninguno de los anteriores hace la diferencia.

Haciendo un clon de git con http:// en lugar de git:// produce esto:

H:\>git clone http://github.com/akitaonrails/vimfiles.git 
Initialized empty Git repository in H:/vimfiles/.git/ 
fatal: http://github.com/akitaonrails/vimfiles.git/info/refs download error - The requested URL returned error: 407 

407 es, por supuesto un error de autenticación.

Entonces mi pregunta es: ¿alguien ha logrado que Git trabaje detrás de un proxy, específicamente un proxy ISA? No sé si valdrá la pena buscar esto. Cualquier ayuda muy apreciada.

Gracias!

+0

acaba de agregar otra solución potencial – VonC

+0

Gracias por los comentarios. Supongo que ahora tienes un Git1.6.4? – VonC

Respuesta

54

Tuve exactamente el mismo error; pero el ~/.gitconfig global config file fue la clave.

Si usted tiene un proxy con autenticación que tenga que poner en ella:

git config --global http.proxy http://login:[email protected]:8088 

Y que sólo funciona (con 'git clone http:')

Ejemplo de un blog que detalla la misma configuración: GIT clone over HTTP: who knew?


Si aún falla en 407, podría estar relacionado con un problema con git-fetch losing authentication tokens on the second HTTP GET. A more recent version of libcurl podría ser necesario.


actualización de enero de 2011: jbustamovej menciona en his answer (upvoted) su blog "GitHub Behind Corporate Proxy", que añade esto:

It’s important to note that if your login has a backslash, as in domain\login , you must escape the backslash, as in:

git config --global http.proxy http://domain\\\login:[email protected]:8088 
+1

Gracias por la sugerencia, pero no puedo hacer que esto funcione. Todavía me da un error 407 (de autenticación) aunque configuré el proxy (completo con nombre de usuario y contraseña) tanto en el entorno como en .gitconfig. –

+0

Acabo de probar esto de nuevo, ya que se ha actualizado msysGit, y funcionó.¡Hurra! Supongo que libcurl debe haber sido actualizado en la última versión. –

+0

Charles, ¿qué versión tienes? Con la nueva versión, ¿dónde colocas la configuración del proxy? Tengo el mismo problema y probé muchos modales. –

3

¿Tiene el proxy SOCKS? Si tiene, puede intentar FreeCap para calzar su conexión git. He estado usando git de esta manera por un tiempo.

Si no es así, intente con FreeCap. IIRC podría ser capaz de usar proxies http, pero no lo he intentado.

EDIT: Me usualy socksify cmd.exe usando FreeCap, y de ahí en (casi) todos los programas de línea de órdenes que comienzo de esa sesión se SOCKS también. Es por eso que recomendé Free Cap, ya que SocksCap (otra alternativa) no funciona de esa manera.

En cuanto a usar http.proxy, por alguna razón nunca funcionó para mí con la versión de mingw y mis proxies http de la compañía.

+1

Gracias por esto, FreeCap se ve interesante. ¿Puedes explicar cómo estás usando Git con eso? –

2

he logrado conseguir que funcione a través de una ruta muy complicada. He aquí cómo:

  1. He OpenSSH se ejecuta en mi máquina de casa (una caja de Vista) running under Cygwin
  2. estoy usando Bitvise Tunnelier de Dynamic tunneling via integrated SOCKS/HTTP CONNECT proxy.
  3. Luego uso Freecap (gracias Marko) a "SOCKify" GIT-GUI. Desafortunadamente, tiene que configurar cada .exe de forma individual y ejecutarlos desde dentro de Freecap, por lo que no puede unificar SOCKify todas las herramientas de línea de comandos de git. Puede configurar comandos de línea de comandos explícitos dentro de Freecap, pero tiene que configurar cada uno individualmente, lo que de alguna manera frustra el propósito. Esta es la razón por la que acabo de configurar GIT-GUI en este elaborado sistema loco

Sorprendentemente, parece funcionar, aunque todavía no lo he probado. Se clonará, sin duda, que es un comienzo.

Si alguien tiene una mejor solución, soy todo oídos.

19

Incluso después de configurar el proxy, es posible que no pueda conectarse, ya que el proxy no permite el tráfico de protocolo git. En este caso, es posible que desee probar el uso de "http" en lugar de "git"

H:>git clone http://github.com/akitaonrails/vimfiles.git

Además, si está utilizando un archivo de configuración de proxy automático (PAC), acaba de abrir en un editor de texto. Es bastante fácil seguir el lenguaje de scripting, con un montón de condiciones para redirigir al proxy más eficiente. Busque el que permita el tráfico de propósito general (generalmente, el último proxy configurado) y configúrelo como se menciona en el comentario anterior.

+1

¡Genial! tuve un problema similar con git, estaba dando este error "No se puede conectar al socket (sin error)". Configuré mi http.proxy --global y utilicé http en lugar de git cuando clonaba, y funcionó. – gath

+0

Esto es exactamente lo que era mi problema. No tuve que molestarme con las cosas del poder. –

+0

Obviamente, esto solo funciona para repositorios git que se alojan a través de http. Es decir. Funcionará para repositorios basados ​​en github.com. Para otros, necesitarás trabajar git a través de tu firewall/proxy – shiva

0

he tenido este problema en Windows 7:

$ git clone git://github.com/facebook/php-sdk.git 
Initialized empty Git repository in c:/Users/Jay/temp/php-sdk/.git/ 
github.com[0: 207.97.227.239]: errno=No error 
fatal: unable to connect a socket (No error) 

finalmente se dio cuenta que era AVG Anti virus software en ejecución. Inhabilité el "escudo residente" dentro de AVG y ahora funciona como un amuleto.

$ git clone git://github.com/facebook/php-sdk.git 
Initialized empty Git repository in c:/Users/Jay/temp2/php-sdk/.git/ 
remote: Counting objects: 223, done. 
remote: Compressing objects: 100% (179/179), done. 
emote: Total 223 (delta 84), reused 0 (delta 0) 
Receiving objects: 100% (223/223), 37.32 KiB, done. 
Resolving deltas: 100% (84/84), done. 
1

Python 2.7 y ntlmaps trabajó para mí después de recibir 407 errores y otra basura de GitHub.

.gitconfig:

[http] 
     proxy = http://127.0.0.1:5865 
1

Esto es lo que funcionó para mí:

git config --global http.proxy http://login:[email protected]_SERVER:PORT 
git config --global http.sslVerify false 
Cuestiones relacionadas