2011-05-02 44 views
42

Estoy detrás de un firewall que está bloqueando el puerto 9418 (git) y estoy tratando de instalar algunas herramientas que están haciendo un checkout explícitamente git://github.com/..., por lo que no puedo cambiar a https para el pago .git: // a través del proxy

Así que me pregunto si es posible redireccionar todo el tráfico en el puerto 9418 a través de un proxy y si es así cómo :)

Respuesta

20

Eche un vistazo a core.gitproxy configuración en Git config.

googlear rápida reveló esta secuencia de comandos que pueden ser útiles (o no - yo no probarlo): https://gist.github.com/49288

+1

Hm, interesante. ¿Le importaría al interrogador comentar si esto funciona, y si hay algún inconveniente? – ijw

+0

También estoy interesado en esta información, ya que dije que nunca lo intenté yo mismo :-) –

+0

¡Trabajé para mí! Buen hallazgo! – rkyser

2

¿Has probado un túnel TCP basado en ssh? Si usted tiene un servidor ssh que (a) está fuera del cortafuegos y (b) permite el reenvío de IP, que puede hacer:

ssh -L localhost:9418:<remote>:9418 [email protected] 

o, si se tiene que ejecutar sshd en el puerto 443 para moverse por el servidor de seguridad,

ssh -P 443 -L localhost:9418:<remote-host>:9418 [email protected] 

Entonces, a nivel local:

git checkout git://localhost/... 

Obviamente, esto no es transparente, y que es un poco complicado - no hay duda de herramientas por ahí que están dirigidos más específicamente en el problema. Sin embargo, normalmente utilizo este método porque usa herramientas que tengo a mano (ssh y un servidor virtual cheapo que alquilo).

(he hecho nunca trató esto con una conexión git, pero no veo ninguna razón por la que no funcionaría. Lo he utilizado con muchos otros protocolos TCP-sola-puerto sin problema.)

+0

Sí, puedo conseguir una salida en una cesión temporal específica que trabaja muy bien, pero algo fuera de mi control está tratando hacer 'git clone git: //github.com/...', así que no puedo hacer un proxy así porque no puedo cambiar la URL a 'localhost' –

+0

Puedes intentar configurar temporalmente github.com para ser 127.0.0.1 en/etc/hosts –

65

Si usted está hablando de submódulos git, intente esto:

git config --global url.https://github.com/.insteadOf git://github.com/ 

.. . tomado desde here.

De esta manera, no necesita establecer ningún proxy, ni ejecutar ningún script.

+4

gracias por eso, me salvó una tarde – Patrick

+0

Este es un enfoque súper elegante. Funcionó bastante bien y no involucraba ningún disparate indirecto loco.Anteriormente había sido capaz de cambiar el git: // URI, pero lidiar con bundler en el despliegue hizo de esto una verdadera pesadilla. Su solución es mágicamente indolora. –

+0

Esta es la respuesta que funcionó para mí cuando un git: // url aún no funcionaba después de establecer las configuraciones http.proxy y https.proxy. –

2

Necesita hacer que core.gitProxy señale un comando proxy que conectará git al servidor remoto a través de su proxy SOCKS. Se puede crear un script con el siguiente contenido para servir como un comando de proxy:

nc -x <your_proxy_host>:<your_proxy_port> $1 $2 

Los dos parámetros, lo que representa el host remoto y el puerto, serán pasados ​​a la orden de representación mediante git. Si nombra este script git-proxy y que sea accesible desde su $PATH, puede llamar git config para configurarlo:

git config --global --add core.gitProxy git-proxy 
Cuestiones relacionadas