Lograr que Git funcione con un servidor proxy: falla con "Tiempo de espera de solicitud agotado"

918

¿Cómo consigo que Git use un servidor proxy?

Necesito verificar el código de un servidor Git, pero muestra "Solicitud agotada" cada vez. ¿Cómo puedo evitar esto?

Alternativamente, ¿cómo puedo configurar un servidor proxy?

Martillo de peste
fuente
¿No sería este un elemento de configuración del cliente git? El único aspecto de esto que parece involucrar cmd.exe es que el cliente git puede permitirle especificar un proxy en una variable de entorno.
Michael Burr el
He editado la pregunta original para eliminar todas las referencias de Windows, ya que este problema es específico de git per se.
PlagueHammer 01 de
3
¡Tenga en cuenta que podrá configurar un proxy por URL de repositorio de git!
VonC
1
Esta pregunta es muy similar a " ¿Cómo extraigo de un repositorio Git a través de un proxy HTTP?" .
Derek Mahar
3
La mayoría de las respuestas en esta pregunta se refieren a servidores proxy HTTP. Si usted tiene un proxy SOCKS, consulte esta pregunta para el HTTP / S protocolos y éste para el git: // protocolo.
usuario

Respuestas:

1634

Comando a usar:

git config --global http.proxy http://proxyuser:[email protected]:8080
  • cambio proxyuser a su usuario proxy
  • cambio proxypwd a su contraseña de proxy
  • cambio proxy.server.com a la URL de su servidor proxy
  • cambiar 8080al puerto proxy configurado en su servidor proxy

Tenga en cuenta que esto funciona para los repositorios http y https.

Si decide restablecer este proxy en cualquier momento y trabajar sin proxy:

Comando a usar:

git config --global --unset http.proxy

Finalmente, para verificar el proxy configurado actualmente:

git config --global --get http.proxy
Salim Hamidi
fuente
15
Gracias salim. El mío funcionó sin el proxyuser: proxypwd en la URL.
Kwex
11
Gracias chicos. Para mí fue la autenticación basada en NTLM y simplemente actualizar mi .gitconfig no funcionó :(. Así que tuve que obtener CNTLM que utiliza la autenticación NTLM. Todo lo que tuve que hacer fue apuntar mi CNTLM al servidor proxy de mi red y luego apuntar mi software administrador de actualizaciones (como yum, apt-get o ssh) al proxy local. En caso de operaciones git como clone, extraiga http.proxy era mi proxy configurado localmente con el servidor local.
Mayur Nagekar
99
Hola, ¿cómo puedo configurar proxypass si tiene el carácter "@"? Sé que debo escapar de este personaje, pero no sé cómo ... Gracias
patricK
13
@patricK Puedes usar %40 como reemplazo de la @cadena de nombre de usuario / contraseña, aunque no lo he probado yo mismo. Espero eso ayude. :-)
Sourav Ghosh
14
@patricK Puedo confirmar que usar% 40 como reemplazo de @ works. Parece que si un carácter especial no funciona, debería intentar codificarlo con URL. Las codificaciones se encuentran aquí: w3schools.com/tags/ref_urlencode.asp
Jon
133

Esto funcionó para mí, en Windows XP detrás de un firewall corporativo.

No tuve que instalar ningún proxy local ni ningún otro software además de git v1.771 desde http://code.google.com/p/msysgit/downloads/list?can=3

$ git config --global http.proxy http://proxyuser:[email protected]:8080
$ git config --system http.sslcainfo /bin/curl-ca-bundle.crt
$ git remote add origin https://mygithubuser:[email protected]/repoUser/repoName.git
$ git push origin master

proxyuser = el usuario proxy que me asignó nuestro departamento de TI, en mi caso es el mismo usuario de Windows que uso para iniciar sesión en mi PC, el usuario de Active Directory

proxypwd = la contraseña de mi usuario proxy

proxy.server.com:8080 = el nombre del proxy y el puerto, lo obtuve del Panel de control, Opciones de Internet, Conexiones, botón Configuración de LAN, botón Avanzado dentro de la sección Servidor proxy, use el nombre del servidor y el puerto en la primera fila (http) .

mygithubuser = el usuario que uso para iniciar sesión en github.com

mygithubpwd = la contraseña para mi usuario de github.com

repoUser = el usuario propietario del repositorio

repoName = el nombre del repo

Alvaro
fuente
2
¡Hurra, gracias! git config --global http.sslcainfo MY_NEW_CERTS_BUNDLE.crtAdemás, los certificados descargados como se describe en simplicidade.org/notes/archives/2011/06/… (gracias a: stackoverflow.com/a/7206627/98528 ) lo hicieron por mí.
akavel
3
Parece funcionar para mí, pero git todavía no funciona cuando le pido que clone un repositorio usando el git://protocolo.
Ajedi32
3
Un par de aclaraciones sobre la información de pablolic, basadas en lo que funcionó para mí: 1) Si proxyuser es un inicio de sesión de Windows, omita el dominio AD, solo incluya el nombre de usuario sin el dominio; 2) Los espacios en el proxypwd deben codificarse como "+". por ejemplo, "Mi contraseña" debe ingresarse como "Mi + Contraseña".
Simon Tewsi el
2
@ EdmundYeung99: Sugeriría reemplazar el símbolo @ con% 40. No lo he probado, pero creo que es una codificación URL estándar.
Simon Tewsi
2
@demongolem: sospecho que es posible que deba codificar su contraseña con URL (no lo he probado, esto es solo una suposición educada). Vea la columna UrlEncoded en la tabla en la siguiente respuesta: stackoverflow.com/a/11236038/216440 En su caso, eso significaría reemplazar $ con% 24.
Simon Tewsi
52

Establezca una variable de sistema nombrada http_proxycon el valor de ProxyServer:Port. Esa es la solución más simple. Respectivamente, use https_proxycomo daefu señaló en los comentarios.

Establecer gitproxy (como menciona sleske) es otra opción, pero eso requiere un "comando", que no es tan sencillo como la solución anterior.

Referencias: http://bardofschool.blogspot.com/2008/11/use-git-behind-proxy.html

Martillo de peste
fuente
10
O use 'https_proxy' si se está conectando a un repositorio https.
daefu
1
@daefu: No estoy seguro si necesita configurar https_proxy. Estoy conectado a un repositorio https y seguí el primer paso de las instrucciones de pablolic (es decir, agregar http.proxy al archivo de configuración de git). Eso fue todo lo que necesitó para mí.
Simon Tewsi
3
https_proxy fue requerido para mí. Establecer solo http_proxy no le permitió clonar un repositorio HTTPS
explunit
@daefu +1 esto también funciona con viudas github - pregunta relacionada: stackoverflow.com/questions/16216176/…
blue-sky
44
@SimonTewsi @explunit Mientras que la configuración de las variables de entorno http_proxyes necesaria para las URL HTTP y https_proxypara las URL HTTPS. Alternativamente, uno podría establecer all_proxytodas las URL. Ver ENVIRONMENTsección en rizo (1) . Sin embargo, mientras configura las opciones de git-config, http.proxyse usa tanto para URL HTTP como HTTPS. Ver http.proxyen git-config (1) .
Susam Pal
43

Si la forma de la línea de comandos de configurar su servidor proxy no funciona, probablemente solo pueda editar .gitconfig (en la raíz de su perfil, que puede ocultar tanto en C: \ Documents and Settings y en alguna unidad de red) y agregar esto :

[http]
    proxy = http://username:[email protected]:8080

Sin embargo, YMMV, esto solo cubre el primer paso de la configuración de la línea de comandos. Es posible que también deba editar la configuración de git del sistema y no tengo idea de dónde lo ocultaron.

Randakar
fuente
1
"Es posible que también deba editar la configuración de git del sistema". No, generalmente no. El sistema y la configuración del usuario se combinan; configurar el proxy en uno de los dos debería ser suficiente.
sleske
En mi caso, se encuentra en mi máquina Windows en [git home] \ etc \ gitconfig, ¡después de editarlo funciona de maravilla!
Barmaley Red Star
Esto es especialmente útil si la línea de comando no le gusta su contraseña debido a caracteres especiales.
Origen
37

Como alternativa al uso git config --global http.proxy address:port, puede configurar el proxy en la línea de comando:

git -c "http.proxy=address:port" clone https://...

La ventaja es que el proxy no se establece de forma persistente. En Bash, puede establecer un alias:

alias git-proxy='git -c "http.proxy=address:port"'
Steve Pitchers
fuente
22

Si está utilizando ubuntu, haga lo siguiente ...

Paso 1: instale el sacacorchos

$ sudo apt-get install corkscrew

Paso 2: escriba un script llamado git-proxy.sh y agregue lo siguiente

#!/bin/sh

exec corkscrew <name of proxy server> <port> $*

# <name_of_proxy_server> and <port> are the ip address and port of the server
# e.g. exec corkscrew 192.168.0.1 808 $*

Paso 3: haga que el script sea ejecutable

$ chmod +x git-proxy.sh

Paso 4: configure el comando proxy para GIT configurando la variable de entorno

$ export GIT_PROXY_COMMAND="/<path>/git-proxy.sh"

Ahora use los comandos git, como

git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Sk Hasanujjaman
fuente
Probablemente deberías usar en "$@"lugar de $*. Vea su manual de shell para más detalles.
Hynek -Pichi- Vychodil
15

Enfrenté el mismo problema debido a varios .gitconfigarchivos en Windows, seguimos los pasos a continuación para solucionarlo:

Paso 1: Abra Git BASH

Paso 2: busca .gitconfigy ejecuta el siguiente comando:

git config --list --global --show-origin

Paso 3: copie el contenido a continuación en .gitconfig:

[http]
    proxy = http://YOUR_PROXY_USERNAME:[email protected]:YOUR.PROXY.SERVER.PORT
    sslverify = false
[https]
    proxy = http://YOUR_PROXY_USERNAME:[email protected]:YOUR.PROXY.SERVER.PORT
    sslverify = false
[url "http://github.com/"]
    insteadOf = git://github.com/

[user]
    name = Arpit Aggarwal
    email = [email protected]
Arpit Aggarwal
fuente
12

Intente poner lo siguiente en el archivo ~ / .gitconfig:

[http]
    proxy = http://proxy:8080
[https]
    proxy = http://proxy:8080
[url "https://"]
    insteadOf = git://
augustocbx
fuente
1
Probé todas las cosas de arriba. No fue hasta que agregué la entrada https enumerada aquí que pude trabajar.
Brent Fisher
11

Para el protocolo git (git: // ...), instale socat y escriba un script como:

#!/bin/sh

exec socat - socks4:your.company.com:$1:$2

hazlo ejecutable, ponlo en tu camino y en tu ~/.gitconfigconjunto core.gitproxycon el nombre de ese script.

ashutosh
fuente
Funciona para ventanas con SOCAT de cygwin también. usandosocat STDIO PROXY:%proxy%:%1:%2,proxyport=%PROXYPORT%
davenpcj
1
Se puede usar set GIT_PROXY_COMMAND=path\to\scriptpara hacer que GIT use el proxy sin meterse con git config.
davenpcj
¡Si! Finalmente la pista correcta! También necesitaba autenticación: exec socat STDIO PROXY: <proxy>: $ 1: $ 2, proxyport = <port>, proxyauth = <user>: <passwd> Encontrado aquí: gist.github.com/sit/49288
Joachim
11

Hay algo que noté y quiero compartir aquí:

git config --global http.proxy http://<proxy address>:<port number>

El método anterior no funcionará para las URL ssh (es decir, [email protected]:<user name>/<project name>.git):

git clone [email protected]:<user name>/<project name>.git // will not use the http proxy

Y las cosas no cambiarán si configuramos SSH sobre el puerto HTTPS ( https://help.github.com/en/articles/using-ssh-over-the-https-port ) porque solo cambia el puerto (22 por defecto ) la conexión ssh se conecta a.

(No es un hablante nativo de inglés, refine mis palabras si es necesario)

miáo
fuente
7

Trabajo en Windows XP en el trabajo (estado / gobierno), así que hice mi investigación y encontré esto aquí y funcionó para mí. Espero que esto ayude :)

La variable de entorno http_proxy

Si usa un servidor proxy o firewall, es posible que deba configurar la variable de entorno http_proxy para acceder a alguna url desde la línea de comandos. Ejemplo: instalar ppm para perl o aplicar rpm en linux, actualizar ubuntu

Establezca la variable http_proxy con el nombre de host o la dirección IP del servidor proxy: http_proxy = http: // [proxy.example.org]

Si el servidor proxy requiere un nombre de usuario y una contraseña, inclúyalos en el siguiente formulario: http_proxy = http: // [nombre de usuario: contraseñ[email protected]]

Si el servidor proxy usa un puerto que no sea 80, incluya el número de puerto: http_proxy = http: // [nombre de usuario: contraseñ[email protected]: 8080]

Windows XP

  1. Abra el Panel de control y haga clic en el ícono Sistema.
  2. En la pestaña Avanzado, haga clic en Variables de entorno.
  3. Haga clic en Nuevo en el panel Variables del sistema.
  4. Agregue http_proxy con la información de proxy adecuada (consulte los ejemplos anteriores).

Linux, Solaris o HP-UX

Establezca la variable de entorno http_proxy utilizando el comando específico de su shell (por ejemplo, establecer o exportar). Para que este cambio sea persistente, agregue el comando al archivo de perfil apropiado para el shell. Por ejemplo, en bash, agregue una línea como la siguiente a su archivo .bash_profile o .bashrc:

  1. http_proxy = http: // [nombre de usuario: contraseña @ nombre de host: puerto];
  2. export $ http_proxy
Shak Daniel
fuente
tanx -> :) C: \ Users \ AT> echo% https_proxy% 172.20.4.55:808
qasem
7

Además de estas respuestas, me pareció útil considerar estos 2 puntos:

Es posible que deba aplicar un esquema de autenticación:

[http]
    # https://github.com/git/git/blob/master/Documentation/config.txt
    proxyAuthMethod = anyauth|basic|digest|negotiate|ntlm

Además, normalmente con el esquema de autenticación NTLM, uno puede necesitar proporcionar explícitamente el dominio AD.

En git bash:

echo %userdomain%

Y actualice el http.proxy en consecuencia:

git config --global http.proxy http://DOMAIN\\proxyuser:[email protected]:8080

De todos modos, la investigación puede ser ayudada agregando registros CURL:

export GIT_CURL_VERBOSE=1
blacelle
fuente
Necesitaba agregar proxyAuthMethod usando git config --global http.proxyAuthMethod basic. Git gersion 2.8.3 no envió ninguna autenticación hasta que configuré este parámetro de configuración.
HeatfanJohn
5

Si tiene tsocks o proxychains instalados y configurados, puede

$ tsocks git clone <you_repository>

o

$ proxychains git clone <you_repository>

para acortarlo, creé un enlace de símbolo /usr/bin/ppara proxychainspoder usarlo así

p git clone <you_repository>

y puedo usarlo para representar cualquier comando,

p <cmd-need-be-proxied>

por cierto, proxychains no se actualiza durante mucho tiempo, es posible que desee probar proxychians-ng

fangxing
fuente
4

Configurar el proxy git en la terminal

Si

  • no desea establecer proxy para cada uno de sus proyectos git manualmente, uno por uno
  • siempre quiere usar el mismo proxy para todos sus proyectos

Establecerlo globalmente una vez

git config --global http.proxy username:password@proxy_url:proxy_port
git config --global https.proxy username:password@proxy_url:proxy_port

si desea configurar el proxy para un solo proyecto git (puede haber algunas situaciones en las que no desee usar el mismo proxy o ningún proxy para algunas conexiones git)

//go to project root
cd /bla_bla/project_root
//set proxy for both http and https
git config http.proxy username:password@proxy_url:proxy_port
git config https.proxy username:password@proxy_url:proxy_port

si desea mostrar la configuración actual del proxy

git config --list 

si quieres eliminar proxy globalmente

git config --global --unset http.proxy
git config --global --unset https.proxy

si desea eliminar el proxy para solo una raíz git

//go to project root
cd /bla-bla/project_root
git config --unset http.proxy
git config --unset https.proxy
Add080bbA
fuente
3

aquí está la configuración del proxy

git config --global http.proxy http://<username>:<pass>@<ip>:<port>
git config --global https.proxy http://<username>:<pass>@<ip>:<port>
Hannad Rehman
fuente
3

Seguí la mayoría de las respuestas recomendadas aquí. Primero recibí el siguiente error:

fatal: no se puede acceder a ' https://github.com/folder/sample.git/ ': schannel: next InitializeSecurityContext falló: Error desconocido (0x80092012) - La función de revocación no pudo verificar la revocación del certificado.

Luego probé el siguiente comando de @Salim Hamidi

git config --global http.proxy http://proxyuser:[email protected]:8080

Pero recibí el siguiente error:

fatal: no se puede acceder a ' https://github.com/folder/sample.git/ ': se recibió el código HTTP 407 del proxy después de CONECTAR

Esto podría suceder si el servidor proxy no puede verificar el certificado SSL. Por lo tanto, queremos asegurarnos de que la verificación SSL esté desactivada (no se recomienda para sitios no confiables), por lo que he realizado los siguientes pasos que fueron recomendados por @Arpit pero con ligeros cambios:

1.Primero asegúrese de eliminar cualquier configuración de proxy anterior:

git config --global --unset http.proxy

2.Lista y obtén el contenido de gitconfig

git config --list --show-origin

3. Última actualización del contenido del archivo gitconfig de la siguiente manera:

[http]
sslCAInfo = C:/yourfolder/AppData/Local/Programs/Git/mingw64/ssl/certs/ca-bundle.crt
sslBackend = schannel
proxy = http://proxyuser:[email protected]:8080
sslverify = false
[https]
proxy = http://proxyuser:[email protected]:8080
sslverify = false
Wael Almadhoun
fuente
3

He intentado todas las respuestas anteriores y nada funcionó para mí, ya que había un problema de codificación de contraseña proxy.

Este comando funcionó:

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

No ingrese la contraseña en su comando. Preguntará dinámicamente cuando intentes conectarte a cualquier repositorio de git.

Ishtdeep Hora
fuente
Gracias, esto funcionó para mí. Aunque la configuración de git debería ser http.proxy
ochhii
el nombre de usuario no es suficiente. También se requiere contraseña.
Dinith
use este código {git config --global http.proxy proxyuser: [email protected]: 8080 }
Dinith
2

Para usuarios de Windows: si funciona git configo set http_proxy=no, esta respuesta puede ayudar:

reemplace el git://protocolo del repositorio git con http://. Tenga en cuenta que tendrá que configurar el http_proxyprimero, de todos modos.

DomTomCat
fuente
0

¡Después de probar incansablemente todas las soluciones en esta página, mi trabajo fue usar una clave SSH en su lugar!

  1. Abrir Git Bash
  2. $ ssh-keygen.exe -t rsa -C
  3. Abra su proveedor de Git (Github, Bitbucket, etc.)
  4. Agregue copia del contenido del archivo id_rsa.pub a la página de entrada del proveedor de Git (verifique su perfil)
Janac Meena
fuente