Ir al contenido
GProxy
Registro
Гайды 8 min de lectura 31 vistas

Configuración de Proxy de Git

Aprende a configurar Git para acceso a servidor proxy. Esta guía cubre la configuración para los comandos clone, push y pull a través de tu proxy.

Configuración de Proxy de Git

La configuración del proxy de Git implica configurar los ajustes http.proxy y https.proxy de Git, o aprovechar variables de entorno como HTTP_PROXY y HTTPS_PROXY, o usar ProxyCommand dentro de las configuraciones SSH para operaciones Git basadas en SSH, para enrutar el tráfico a través de un servidor intermediario.

Comprensión de los Requisitos del Proxy de Git

Los firewalls corporativos, las políticas de seguridad de red o el acceso restringido a internet a menudo requieren enrutar el tráfico de Git a través de un servidor proxy. Esto se aplica a operaciones como git clone, git fetch, git pull y git push. El método de configuración depende del protocolo de la URL de Git: https:// (o http://) utiliza proxies HTTP/HTTPS, mientras que ssh:// (o git@) utiliza métodos de proxy específicos de SSH.

Configuración del Proxy Git HTTP/HTTPS

Para repositorios Git accedidos a través de URLs https:// o http://, Git utiliza configuraciones de proxy HTTP/HTTPS.

Método de Configuración de Git (git config)

Este es el método recomendado para configurar proxies HTTP/HTTPS para Git. Las configuraciones pueden ser globales (para todos los repositorios) o específicas para un solo repositorio.

Configuración Global

Para configurar un proxy globalmente para todos los repositorios Git en un sistema:

# Para proxy HTTP (ej., para URLs https://github.com a través de un proxy http)
git config --global http.proxy http://proxy.example.com:8080

# Para proxy HTTPS (ej., para URLs https://github.com a través de un proxy https)
# Nota: A menudo, un proxy HTTPS se configura de manera similar a un proxy HTTP,
# pero el tráfico se tuneliza explícitamente.
git config --global https.proxy http://proxy.example.com:8080

Si el proxy requiere autenticación:

git config --global http.proxy http://username:password@proxy.example.com:8080
git config --global https.proxy http://username:password@proxy.example.com:8080

Por seguridad, en lugar de incrustar la contraseña directamente en la URL, Git puede solicitar credenciales o recuperarlas de un ayudante de credenciales. Omitir la contraseña hará que Git la solicite.

Configuración por Repositorio

Para configurar un proxy para un repositorio específico, navegue al directorio raíz del repositorio y omita la bandera --global:

cd /path/to/my/repo
git config http.proxy http://proxy.example.com:8080
git config https.proxy http://proxy.example.com:8080

Estas configuraciones se almacenarán en el archivo .git/config de ese repositorio.

Deshabilitar Proxy para Hosts Específicos

Para omitir el proxy para ciertos dominios (ej., servidores Git internos), use http.noProxy:

git config --global http.noProxy "localhost,127.0.0.1,*.internal.com"

Se pueden separar múltiples hosts con comas.

Verificación de Certificados SSL

En entornos corporativos que utilizan proxies transparentes o de intercepción (proxies MITM), la verificación de certificados SSL de Git puede fallar debido a que el proxy presenta su propio certificado en lugar del del servidor de origen.

Para solucionar esto, configure Git para que confíe en el certificado de CA raíz corporativo:

git config --global http.sslCAInfo /path/to/corporate/ca-cert.pem

Alternativamente, y no recomendado para entornos de producción debido a riesgos de seguridad, la verificación SSL puede deshabilitarse:

git config --global http.sslVerify false

Esto omite la validación de certificados, haciendo que las conexiones sean vulnerables a ataques reales de intermediario. Úselo solo para depuración temporal o en entornos controlados y aislados.

Variables de Entorno

Las herramientas de línea de comandos, incluyendo curl (que Git a menudo usa para transferencias HTTP/HTTPS), típicamente respetan las variables de entorno HTTP_PROXY, HTTPS_PROXY y NO_PROXY. Estas variables proporcionan una configuración de proxy a nivel de sistema o de sesión que las aplicaciones pueden heredar.

# Para proxy HTTP
export HTTP_PROXY="http://proxy.example.com:8080"
export HTTPS_PROXY="http://proxy.example.com:8080" # A menudo el mismo para tunelización de tráfico HTTPS

# Para proxy SOCKS
export ALL_PROXY="socks5://proxy.example.com:1080"

# Excluir hosts específicos del proxy
export NO_PROXY="localhost,127.0.0.1,*.internal.com"

Tenga en cuenta que las configuraciones http.proxy y https.proxy de Git tienen precedencia sobre estas variables de entorno para las propias operaciones HTTP/HTTPS de Git. Las variables de entorno son útiles cuando git config no está configurado explícitamente, o para otras herramientas que interactúan con Git.

Comparación: git config vs. Variables de Entorno

Característica git config http.proxy / https.proxy Variables de Entorno HTTP_PROXY / HTTPS_PROXY
Alcance Específico de Git (global o por repositorio) A nivel de sistema o de sesión para aplicaciones que las respetan
Precedencia Mayor para operaciones de Git; anula las variables de entorno. Menor para Git; actúa como respaldo o para otras herramientas.
Persistencia Persistente entre sesiones (almacenado en .gitconfig o .git/config). No persistente por defecto; requiere añadir al perfil del shell (.bashrc, .zshrc) para persistencia.
Autenticación Soporta username:password@ en la URL, o solicita credenciales. Soporta username:password@ en la URL.
Flexibilidad Control granular por repositorio Git. Impacto más amplio en todas las aplicaciones que respetan las variables.

Configuración del Proxy Git SSH

Para repositorios Git accedidos a través de URLs ssh:// o git@, la configuración del proxy se gestiona a través de la configuración del cliente SSH, específicamente usando la directiva ProxyCommand en ~/.ssh/config. Las configuraciones estándar de proxy HTTP/HTTPS (ej., http.proxy) no afectan las conexiones SSH.

Uso de ~/.ssh/config con ProxyCommand

El ProxyCommand le dice a SSH que establezca una conexión al host de destino (%h) y puerto (%p) enrutándola primero a través de un comando externo, típicamente un cliente proxy.

Prerrequisitos

  • netcat (nc): Para tunelización TCP básica y proxies SOCKS.
  • corkscrew o connect-proxy: Para tunelizar SSH a través de proxies HTTP/HTTPS que requieren autenticación.

Tunelización de Proxy HTTP/HTTPS

Si su proxy es un proxy HTTP/HTTPS, puede usar corkscrew o connect-proxy.

  1. Instale corkscrew o connect-proxy (si aún no está presente).

    • En Debian/Ubuntu: sudo apt-get install corkscrew
    • En macOS (con Homebrew): brew install corkscrew
    • connect-proxy a menudo es parte de openssh o está disponible por separado.
  2. Edite ~/.ssh/config:
    Cree o modifique ~/.ssh/config con lo siguiente:

    ```ssh
    Host github.com
    ProxyCommand corkscrew proxy.example.com 8080 %h %p
    # Si el proxy requiere autenticación:
    # ProxyCommand corkscrew proxy.example.com 8080 %h %p /path/to/proxy_auth_file

    Host gitlab.com
    ProxyCommand corkscrew proxy.example.com 8080 %h %p

    O para todos los hosts

    Host *
    ProxyCommand corkscrew proxy.example.com 8080 %h %p
    `` Reemplaceproxy.example.comy8080con la dirección y el puerto de su proxy. El/path/to/proxy_auth_filedebe contenerusername:passworden una sola línea. Asegúrese de que este archivo tenga permisos restrictivos (ej.,chmod 600`).

Tunelización de Proxy SOCKS

Si su proxy es un proxy SOCKS, use netcat (nc) con la opción -X:

  1. Asegúrese de que netcat esté instalado. Generalmente viene preinstalado en la mayoría de los sistemas tipo Unix.

  2. Edite ~/.ssh/config:

    ```ssh
    Host github.com
    ProxyCommand nc -X 5 -x proxy.example.com:1080 %h %p

    Host gitlab.com
    ProxyCommand nc -X 5 -x proxy.example.com:1080 %h %p

    O para todos los hosts

    Host *
    ProxyCommand nc -X 5 -x proxy.example.com:1080 %h %p
    `` Reemplaceproxy.example.comy1080con la dirección y el puerto de su proxy SOCKS. *-X 5: Especifica la versión 5 de SOCKS. Use-X 4para la versión 4 de SOCKS. *-x`: Especifica la dirección y el puerto del proxy.

Autenticación para Proxy SOCKS

Algunas versiones de netcat (nc de OpenBSD, a menudo predeterminada en Linux) soportan la autenticación de proxy SOCKS. Por ejemplo:

Host *
    ProxyCommand nc -X 5 -x user:password@proxy.example.com:1080 %h %p

Consulte la página man de su versión de netcat para la sintaxis y capacidades específicas de autenticación.

Verificación de la Configuración del Proxy

Después de configurar el proxy, verifique que las operaciones de Git se estén enrutando correctamente.

Para Operaciones Git HTTP/HTTPS

Verifique su configuración de Git:

git config --global --get http.proxy
git config --global --get https.proxy
git config --global --get http.noProxy

Realice una operación git clone o git fetch en un repositorio HTTPS:

git clone https://github.com/git/git.git

Si el proxy funciona, la conexión debería ser exitosa. Las herramientas de monitoreo de red pueden confirmar el enrutamiento del tráfico.

Para Operaciones Git SSH

Pruebe su conexión SSH de forma detallada:

ssh -vT git@github.com

Busque la salida que indique la ejecución de ProxyCommand. Por ejemplo:

debug1: Executing proxy command: exec corkscrew proxy.example.com 8080 github.com 22

Luego, intente una operación Git:

git clone git@github.com:git/git.git

Solución de Problemas Comunes

  • Dirección o Puerto del Proxy Incorrectos: Vuelva a verificar la dirección IP o el nombre de host del servidor proxy y el puerto designado.
  • Fallo de Autenticación: Verifique el nombre de usuario y la contraseña del proxy. Para git config, asegúrese de que las credenciales sean correctas o que un ayudante de credenciales esté configurado. Para ProxyCommand, asegúrese de que el archivo de autenticación o las credenciales incrustadas sean correctas.
  • Problemas de Certificado SSL (https://): Si encuentra errores de SSL certificate problem: self signed certificate in certificate chain, su proxy corporativo podría estar realizando inspección SSL. Configure http.sslCAInfo con el certificado de CA raíz de su empresa o, como último recurso, establezca temporalmente http.sslVerify false para depuración (no recomendado para producción).
  • Bloqueos de Firewall: Asegúrese de que su firewall local (si lo hay) y el firewall corporativo permitan conexiones salientes al servidor proxy en su puerto especificado. El propio servidor proxy también debe permitir conexiones a los servicios de alojamiento de Git.
  • Ayudante de ProxyCommand No Encontrado (ssh://): Si ProxyCommand falla con "command not found", asegúrese de que netcat, corkscrew o connect-proxy estén instalados y que su ruta ejecutable esté en la variable de entorno PATH de su sistema. Especifique la ruta completa al ejecutable si es necesario (ej., ProxyCommand /usr/bin/corkscrew ...).
  • Proxy Omitido: Si git config http.noProxy es demasiado amplio, o si las variables de entorno están configuradas incorrectamente, Git podría intentar una conexión directa. Verifique la configuración de noProxy.
  • Tiempo de Espera del Proxy: Las operaciones de larga duración pueden agotar el tiempo de espera si el proxy tiene configuraciones de tiempo de espera agresivas. Esto suele ser un problema de configuración del lado del servidor.
Actualizado: 04.03.2026
Volver a la categoría

Pruebe nuestros proxies

20,000+ proxies en 100+ países del mundo

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.