Hacer que Git funcione con un servidor proxy: falla con "Solicitud agotada"

968

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

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

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

6
1727

Comando para usar:

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

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

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

Comando para usar:

git config --global --unset http.proxy

Finalmente, para verificar el proxy configurado actualmente:

git config --global --get http.proxy
24
  • dieciséis
    Gracias Salim. El mío funcionó sin el proxyuser: proxypwd en la URL.
    Kwex
    30/01/2014 a las 15:45
  • 12
    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 usa autenticación NTLM. Todo lo que tenía que hacer era apuntar mi CNTLM al servidor proxy de mi red y luego apuntar mi software gestor de actualizaciones (como yum, apt-get o ssh) al proxy local. En caso de operaciones de git como clon, tire del http.proxy era mi proxy configurado localmente con el servidor local. 4 de febrero de 2014 a las 5:02
  • 9
    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/02/15 a las 10:52
  • 14
    @patricK Puede usarlo %40como reemplazo de la @cadena de nombre de usuario / contraseña, aunque no lo he probado yo mismo. Espero eso ayude. :-) 4 de junio de 2015 a las 7:00
  • 14
    @patricK Puedo confirmar que usar% 40 como reemplazo de @ funciona. Parece que si un carácter especial no funciona, debería intentar codificarlo con la URL. Las codificaciones se encuentran aquí: w3schools.com/tags/ref_urlencode.asp
    Jon
    8 de julio de 2015 a las 18:36
137

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 de 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 utilizo 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 y el puerto del proxy, 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 de mi usuario de github.com

repoUser = el usuario propietario del repositorio

repoName = el nombre del repositorio

13
  • 2
    ¡Hurra, gracias! git config --global http.sslcainfo MY_NEW_CERTS_BUNDLE.crtademás de los certificados descargados como se describe en simplicidade.org/notes/archives/2011/06/… (gracias a: stackoverflow.com/a/7206627/98528 ) ¡lo hice por mí!
    akavel
    23 de mayo de 2012 a las 14:31
  • 3
    Parece funcionar para mí, pero git todavía no funciona cuando le pido que clone un repositorio usando el git://protocolo.
    Ajedi32
    2 nov. 12 a las 15:03
  • 3
    Un par de aclaraciones a 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 introducirse como "Mi + contraseña". 11 de enero de 2013 a las 3:48
  • 2
    @ EdmundYeung99: Sugeriría reemplazar el símbolo @ con% 40. No lo he probado, pero creo que es una codificación de URL estándar. 5 de mayo de 13 a las 12:03 p.m.
  • 2
    @demongolem: sospecho que es posible que deba codificar la URL de su contraseña (no lo he probado, esto es solo una suposición). Consulte la columna UrlEncoded en la tabla en la siguiente respuesta: stackoverflow.com/a/11236038/216440 En su caso, eso significaría reemplazar el $ con% 24. 6 de junio de 2013 a las 6:23
54

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

Configurar gitproxy (como menciona sleske) es otra opción, pero 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

6
  • 10
    O use 'https_proxy' si se está conectando a un repositorio https.
    daefu
    6 de diciembre de 2011 a las 7:39
  • 1
    @daefu: No estoy seguro de si necesita configurar https_proxy. Estoy conectado a un repositorio https y seguí el primer paso de las instrucciones de pablolic (es decir, agregando http.proxy al archivo de configuración de git). Eso fue todo lo que necesité para mí. 11 de enero de 2013 a las 3:41
  • 3
    https_proxy era necesario para mí. Establecer solo http_proxy no le permitió clonar un repositorio HTTPS 18 feb 2013 a las 15:17
  • @daefu +1 esto también funciona con widows github - pregunta relacionada: stackoverflow.com/questions/16216176/… 26/04/13 a las 10:16
  • 4
    @SimonTewsi @explunit Al configurar las variables de entorno http_proxyse requiere para las URL HTTP y https_proxyes obligatorio para las URL HTTPS. Alternativamente, se podría establecer all_proxypara todas las URL. Ver ENVIRONMENTsección en rizo (1) . Sin embargo, al configurar las opciones de git-config, http.proxyse usa para las URL HTTP y HTTPS. Ver http.proxyen git-config (1) . 14 de febrero de 2016 a las 6:23
44

Si la forma de la línea de comandos para configurar su servidor proxy no funciona, probablemente pueda editar .gitconfig (en la raíz de su perfil, que puede ocultarse tanto en C: \ Documents and Settings como 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 tenga que editar la configuración de git del sistema y no tengo idea de dónde lo escondieron.

3
  • 1
    "Puede que también tengas que editar la configuración de git del sistema". No, normalmente no. La configuración del sistema y del usuario se combinan; configurar el proxy en uno de los dos debería ser suficiente.
    sleske
    9/10/12 a las 7:28
  • En mi caso, está ubicado en mi máquina Windows en [git home] \ etc \ gitconfig - ¡después de editarlo funciona como un encanto! 3 de octubre de 2013 a las 4:28
  • Esto es especialmente útil si a la línea de comandos no le gusta su contraseña debido a caracteres especiales.
    Origin
    26/10/2016 a las 9:42
44

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"'
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: hacer 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 usa los comandos de git, como

git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
1
15

Enfrentó el mismo problema debido a varios .gitconfigarchivos en Windows, siga los pasos a continuación para solucionar el mismo:

Paso 1: Abra Git BASH

Paso 2: Busque .gitconfig, ejecutando 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]
14

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 ) a la que se conecta la conexión SSH.

12

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

[http]
    proxy = http://proxy:8080
[https]
    proxy = http://proxy:8080
[url "https://"]
    insteadOf = git://
1
  • 1
    Probé todo lo anterior. No fue hasta que agregué la entrada https que se enumera aquí que pude trabajar. 5 oct 2018 a las 20:06
11

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

#!/bin/sh

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

hágalo ejecutable, póngalo en su ruta y en su ~/.gitconfigconjunto core.gitproxycon el nombre de ese script.

3
  • También funciona para Windows con SOCAT de cygwin. utilizandosocat STDIO PROXY:%proxy%:%1:%2,proxyport=%PROXYPORT% 28/04/2016 a las 16:20
  • 1
    Se puede usar set GIT_PROXY_COMMAND=path\to\scriptpara hacer que GIT use el proxy sin interferir con la configuración de git. 28/04/2016 a las 16:22
  • ¡Sí! ¡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
    6 de noviembre de 2017 a las 17:08
7

Trabajo en Windows XP en el trabajo (estado / gobierno), así que investigué 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

Configure 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 contraseña, inclúyalos en el siguiente formulario: http_proxy = http: // [nombre de usuario: contraseñ[email protected]]

Si el servidor proxy utiliza un puerto diferente al 80, incluya el número de puerto: http_proxy = http: // [nombre de usuario: contraseñ[email protected]: 8080]

Windows XP

  1. Open the Control Panel and click the System icon.
  2. On the Advanced tab, click on Environment Variables.
  3. Click New in the System variables panel.
  4. Add http_proxy with the appropriate proxy information (see examples above).

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:// [username:[email protected]:port];
  2. export $http_proxy
1
  • tanx -> :) C: \ Usuarios \ AT> echo% https_proxy% 172.20.4.55:808
    Qasem
    17 dic 2019 a las 10:30
7

Además de estas respuestas, encontré útil considerar estos 2 puntos:

Es posible que deba hacer cumplir 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, es posible que sea necesario 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 se puede ayudar agregando registros CURL:

export GIT_CURL_VERBOSE=1
1
  • 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. 24/07/18 a las 20:14
6

Si tiene tsocks o proxychains instalados y configurados, puede

$ tsocks git clone <you_repository>

o

$ proxychains git clone <you_repository>

para hacerlo más corto, creé un enlace de símbolo /usr/bin/ppara proxychains, así puedo usarlo así

p git clone <you_repository>

y puedo usarlo para proxy cualquier comando,

p <cmd-need-be-proxied>

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

5

Configurando el proxy de git en la terminal

si

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

Configúrelo globalmente una vez

git config --global http.proxy username:[email protected]_url:proxy_port
git config --global https.proxy username:[email protected]_url:proxy_port

si desea configurar el proxy para un solo proyecto de git (puede haber algunas situaciones en las que es posible que no desee usar el mismo proxy o cualquier proxy para algunas conexiones de git)

//go to project root
cd /bla_bla/project_root
//set proxy for both http and https
git config http.proxy username:[email protected]_url:proxy_port
git config https.proxy username:[email protected]_url:proxy_port

si desea mostrar la configuración actual del proxy

git config --list 

si desea eliminar el proxy a nivel mundial

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

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

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

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>
3

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

fatal: unable to access 'https://github.com/folder/sample.git/': schannel: next InitializeSecurityContext failed: Unknown error (0x80092012) - The revocation function was unable to check revocation for the certificate.

Entonces probé el siguiente comando por @Salim Hamidi

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

Pero recibí el siguiente error:

fatal: unable to access 'https://github.com/folder/sample.git/': Received HTTP code 407 from proxy after CONNECT

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

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

git config --global --unset http.proxy

2.Luego enumere y obtenga el contenido de gitconfig

git config --list --show-origin

3.Última actualización del contenido del archivo gitconfig como se muestra a continuación:

[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
3

Probé todas las respuestas anteriores y nada funcionó para mí, ya que hubo problemas de codificación de contraseña de 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 intente conectarse a cualquier repositorio de git.

3
  • Gracias, esto funcionó para mí. Aunque la configuración de git config debe ser http.proxy
    ochhii
    11/07/19 a las 10:04
  • El nombre de usuario no es suficiente. También se requiere contraseña.
    Dinith
    21/11/19 a las 3:58
  • use este código {git config --global http.proxy proxyuser: [email protected]: 8080 }
    Dinith
    21/11/19 a las 3:59
2

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

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

1

Después de probar incansablemente todas las soluciones en esta página, ¡mi solución 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 una copia del contenido del archivo id_rsa.pub en la página de entrada del proveedor de Git (verifique su perfil)
1

una alternativa al uso de un proxy es usar SSH En las configuraciones de git, configure el origen remoto en la dirección ssh Luego use el comando ssh-keygen, que le brinda una clave pública que puede configurar en la configuración de su cuenta de GitLab o Gitab y iniciar sesión en consecuencia hecho ...

1-verifica qué controles remotos están usando ejecutándolos git remote -ven tu cliente Git.

2-si es http (s) url, cámbielo a la dirección ssh, ejecute: git remote set-url <remote name, e.g. origin> <new SSH URL> por ejemplo

git remote set-url [email protected]:example/myproject.git

3-para generar la clave ssh para iniciar sesión, ejecute:, ssh-keygen -oeste comando genera claves públicas (archivo id_rsa.pub) y privadas.

Contenido de clave pública de 4 copias . (del archivo id_rsa.pub)

5-vaya a gitlab / githup / .... sección de perfil> configuración / ssh-key. crear una nueva clave ssh y pegar el contenido de la clave pública