Cómo resolver el error ssh: connect to host github.com port 22: Connection timed out al subir código a GitHub
Al trabajar con Git y intentar enviar cambios a GitHub, ocasionalmente podemos encontrarnos con un error similar a este:
ssh: connect to host github.com port 22: Connection timed out
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
A continuación se presentan las causas más frecuentes de este problema y las对应的 soluciones disponibles.
Diagnóstico del problema
- Restricciones de red:
- La conexión a Internet puede ser inestable o el proveedor de servicios puede estar bloqueando el puerto SSH estándar (22).
- Políticas de firewall:
- Las redes corporativas, académicas o institucionales frecuentemente implementan restricciones que impiden conexiones SSH al puerto 22 de servidores externos como GitHub.
- Acceso limitado a los servidores de GitHub:
- Aunque es poco común, los servidores de GitHub pueden experimentar interrupciones temporales o restricciones de acceso.
- Configuración SSH incorrecta:
- El archivo de configuración local de SSH puede tener opciones mal definidas, o las claves SSH no están correctamente registradas en la cuenta de GitHub.
Métodos de solución
1. Verificar la conectividad de red
- Cambiar de red: Probar con una conexión diferente, como datos móviles o una red doméstica alternativa, para descartar problemas del proveedor actual.
- Prueba de conectividad: Ejecutar
ping github.compara confirmar si existe comunicación básica con el servidor.
2. Modificar el puerto de conexión SSH
- Utilizar el puerto 443 en lugar del 22: Cuando el firewall bloquea el puerto SSH estándar, podemos configurar la conexión para usar el puerto 443, que generalmente permanece abierto.
Procedimiento:
- Abrir o crear el archivo
~/.ssh/config:``` nano ~/.ssh/config
2. Insertar la siguiente configuración:```
Host github.com
Hostname ssh.github.com
Port 443
- Guardar los cambios y cerrar el editor.
3. Validar la configuración de SSH
- Comprobar conexión: Ejecutar el siguiente comando para verificar que SSH puede establecer comunicación con GitHub:``` ssh -T git@github.com
Si aparece un mensaje similar a `Hi username! You've successfully authenticated, but GitHub does not provide shell access.`, la configuración está funcionando correctamente.
#### 4. Revisar las claves SSH
- **Crear una nueva clave** (si es necesario):```
ssh-keygen -t ed25519 -C "correo@ejemplo.com"
- Registrar la clave pública en GitHub:
- Mostrar el contenido de la clave pública:``` cat ~/.ssh/id_ed25519.pub
2. Acceder a GitHub, ir a `Settings > SSH and GPG keys`, seleccionar **New SSH Key**, pegar la clave y guardar.
#### 5. Alternativa con protocolo HTTPS
- Si los problemas con SSH persisten, podemos cambiar temporalmente a HTTPS:```
git remote set-url origin https://github.com/usuario/nombre-repositorio.git
En este caso, será necesario utilizar un token de acceso personal de GitHub en lugar de la contraseña al realizar operaciones de push o pull.
Consideraciones finales
Cuando aparece el error ssh: connect to host github.com port 22: Connection timed out al ejecutar git push, lo más habitual es que la causa sea alguna restricción de red o una configuración incorrecta de SSH. Las estrategias descritas anteriormente—cambiar el puerto de conexión, verificar la configuración de SSH o cambiar a HTTPS—suelen resolver eficazmente estos problemas.