Desarrolladores
SSH y Git agotan el tiempo de espera en un Mac
SSH y Git necesitan una conexión TCP que funcione hasta el servidor. Una red que bloquea el puerto 22, una ruta IPv6 rota o un proxy pueden impedirlo.
Síntomas
git pushogit clonese queda esperando y luego muestra «Operation timed out».sshmuestra «Connection timed out» en una red, pero funciona en otra.- Una sesión SSH se congela tras unos minutos de inactividad.
- Los remotos Git por HTTPS funcionan, pero los remotos SSH no.
Causas probables
- El puerto 22 está bloqueado. Algunas redes de empresas, de hoteles y públicas bloquean SSH. GitHub indica que los firewalls a veces rechazan las conexiones SSH.
- Una ruta IPv6 rota. El Mac prueba primero IPv6. Si IPv6 no funciona, la conexión se queda esperando.
- Las conexiones inactivas se cierran. Un router o un firewall puede cortar una conexión que lleva un tiempo sin enviar datos.
- Hace falta un proxy. Git por HTTPS en una red de empresa puede necesitar
http.proxyo variables de proxy.
Cómo comprobarlo
Conéctate con salida detallada. Las últimas líneas muestran dónde se detiene la conexión.
ssh -vT git@github.comPrueba solo el puerto TCP, con un tiempo de espera de 5 segundos.
nc -vz -G 5 github.com 22Prueba solo con IPv4. Si así funciona, el problema es la ruta IPv6.
ssh -4 -T git@github.comPrueba el servicio SSH de GitHub en el puerto 443.
ssh -T -p 443 git@ssh.github.comMuestra el ajuste de proxy de Git y tus variables de proxy.
git config --get http.proxy env | grep -i proxy
Cómo solucionarlo
Si el puerto 22 está bloqueado, usa SSH por el puerto 443 para GitHub. Añade este bloque a
~/.ssh/config.Host github.com Hostname ssh.github.com Port 443 User gitSi IPv6 falla, usa IPv4 para ese host. Añade
AddressFamily ineta su bloque en~/.ssh/config.Para mantener abiertas las sesiones inactivas, envía un mensaje cada 60 segundos. Añade
ServerAliveInterval 60al bloque del host.Para evitar esperas largas, añade
ConnectTimeout 10al bloque del host.Para remotos HTTPS detrás de un proxy, configura el proxy de Git.
git config --global http.proxy http://proxy.example.com:8080Como prueba, usa la URL HTTPS del repositorio en lugar de la URL SSH.
Con Kilobat
La comprobación de la conexión de Kilobat prueba IPv4 e IPv6 por separado, así que una ruta IPv6 rota recibe una respuesta clara.
kilobat why github.comMira las conexiones abiertas de un proceso.
kilobat destinations --pid 12345
Preguntas
¿Por qué funciona ssh -4 y ssh a secas no?
El Mac probó primero IPv6, y la ruta IPv6 no funcionaba. Con -4, ssh usa solo IPv4.
¿Qué hace ServerAliveInterval?
ssh envía un mensaje por la conexión tras ese número de segundos sin datos. El valor predeterminado es 0, que no envía ninguno.
Fuentes
- GitHub Docs: Usar SSH a través del puerto HTTPS
- ssh(1) y ssh_config(5), página man incluida en macOS 27.2
- nc(1), página man incluida en macOS 27.2
- git-config(1), http.proxy, página man instalada con macOS 27.2 (Git 2.56)
Fuentes revisadas el 29 de octubre de 2026. Las páginas man son las que se instalan con macOS; abre una con man <name> en Terminal.