ssh: conectarse al host github.com puerto 22: se agotó el tiempo de espera de la conexión

174

Estoy bajo un proxy y estoy presionando para git con éxito durante bastante tiempo.
Ahora no puedo empujar a git de repente.
He configurado la clave RSA y el proxy y los verifiqué dos veces, sin resultado y git me está arrojando el error que se muestra en el título de la página.

Vihari Piratla
fuente
66
Cree un punto de acceso en su dispositivo móvil, conéctese a través de su dispositivo móvil y luego git push. Trabajó para mi.
zundi
1
El mismo problema me sucedió en el Reino Unido con Virgin Media. Traté de empujar / tirar a GitHub a través de ssh en casa y no tuve suerte, pero en el trabajo estuvo bien. Entonces me di cuenta de que tenía problemas con mi ISP. La solución simple para mí fue usar Cloudflare DNS en 1.1.1.1lugar de uno predeterminado, por eso @zundi tiene éxito a través de un punto de acceso móvil.
Vladyslav Krylasov

Respuestas:

254

El motivo podría ser la modificación del cortafuegos, ya que se encuentra bajo una red. (En cuyo caso, pueden bloquear deliberadamente algunos puertos)
Para verificar si este es el motivo ...

ssh -T [email protected]

Esto debería expirar. Si ese es el caso, use el protocolo http en lugar de ssh de esta manera,
simplemente cambie su url en el archivo de configuración a http.
Aquí es cómo :-

git config --local -e

cambiar la entrada de

 url = [email protected]:username/repo.git

a

url = https://github.com/username/repo.git
Vihari Piratla
fuente
66
Tuve ese problema una vez, pero reiniciar mi computadora lo resolvió.
Kevin Lee
3
fatal: no se puede acceder a ' gitlab.com : ******. git /': el número de puerto terminó con 'f'
Fakher
Tuve que eliminar el .git de la url para que esto funcione para mí. url = github.com/username/repo
Jesse Buss
44
usar https en su lugar para ssh no es la solución correcta. Debe haber una manera de configurar el proxy en git config y en la configuración de ssh para resolver esto.
shijin
66
Virgin Media UK tiene un modo seguro para niños, que tuve que desactivar.
Finlay Percy
178

Para mi caso, ninguna de las soluciones sugeridas funcionó, así que traté de solucionarlo yo mismo y lo resolví.

Para mí, recibo este error en mi instancia de AWS EC2 UBUNTU, lo que hice para resolverlo fue editar la configuración ssh (o agregarla si no existe).

sudo nano ~/.ssh/config

Y agregué lo siguiente

Host github.com
 Hostname ssh.github.com
 Port 443

Luego, ejecuta el comando ssh -T [email protected] para confirmar si el problema está solucionado.

De acuerdo a esto

A veces, los firewalls se niegan a permitir conexiones SSH por completo. Si el uso de la clonación HTTPS con el almacenamiento en caché de credenciales no es una opción, puede intentar clonar usando una conexión SSH realizada a través del puerto HTTPS. La mayoría de las reglas de firewall deberían permitir esto, pero los servidores proxy pueden interferir

Espero que esto ayude a cualquier otra persona que tenga el mismo problema que yo.

Mahan_F
fuente
3
Esta solución funcionó bien para mí, aunque no resolvió el problema para GitLab. En ese caso, tenga en cuenta que GitLab.com ejecuta un segundo servidor SSH que escucha en el puerto 443 de uso común, que es poco probable que tenga firewall. Todo lo que tiene que hacer es editar su ~/.ssh/configy cambiar la forma en que se conecta a GitLab.com. En ese caso, vea este artículo: about.gitlab.com/2016/02/18/…
lucascavalcante
1
Hola, tuve el mismo problema, mi enrutador es de NET y él bloquea el puerto 22. Esa configuración resolvió mi problema definitivamente
Pedro Soares
No es gitconfig sino sshconfig
GuyT
1
Después de horas de encontrar respuestas ... eres CHAMP, de todos modos, ¿por qué necesitamos cambiar github.com a ssh.github.com? Todavía no lo entiendo
Robert Tirta
45

Reescritura básica de URL

Git proporciona una forma de reescribir URL usando git config. Simplemente emita el siguiente comando:

git config --global url."https://".insteadOf git://

Ahora, como por arte de magia, todos los comandos git realizarán una sustitución de git://ahttps://

fuente: git: // protocolo bloqueado por la compañía, ¿cómo puedo evitar eso?

Michaël P
fuente
1
¡Gracias! La nuestra fue durante la compilación de Jenkins, por lo que no pude editar manualmente el archivo git (no tengo las credenciales de git para la cuenta de jenkins), por lo que esto fue muy útil.
Phil
1
Esto es genial. He agregado alias git para que cada uno cambie fácilmente
lfender6445
17
En cuanto a github, el comando debe ser: git config --global url."https://github.com/".insteadOf [email protected]:. Note las diferencias: se @vuelve //y se :vuelve /.
Frodon
20

dentro de la carpeta .ssh Crear archivo "config"

Host github.com
User git
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 443

Host gitlab.com
Hostname altssh.gitlab.com
User git
Port 443
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Isaque Elcio
fuente
1
Consulte la respuesta de Mahan_F para obtener una explicación detallada de por qué sucede esto.
refaelio
1
Esto es lo único que me funcionó en GitLab. Gracias Isaque!
awwsmm
5

Solución rápida: intente cambiar a una red diferente

Experimenté este problema mientras estaba en un punto de acceso (conexión 3 / 4G). Cambiar a una conexión diferente (WiFi) lo resolvió, pero es solo una solución alternativa: no tuve la oportunidad de llegar al fondo del problema, por lo que las otras respuestas podrían ser más interesantes para determinar el problema subyacente

kip2
fuente
Cambié del WiFi al 4G y funcionó. Yo tampoco entiendo.
Adam Casey
4

Me enfrenté al mismo problema y no pude encontrar una solución que funcionara. Enfrenté este problema al configurar un servidor local y el git no se pudo conectar a través de mi red proxy, pero mi estación de trabajo sí. Este fue el resultado cuando ejecuté el comando ssh -vT [email protected]

ubuntu@server:~$ ssh -vT [email protected]
OpenSSH_7.2p2 Ubuntu-4ubuntu2.8, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /home/ubuntu/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to github.com [13.234.176.102] port 22.

Así que intenté usar una conexión SSH hecha a través del puerto HTTPS editando el archivo de configuración ~/.ssh/configpero fue en vano.

Host github.com
 Hostname ssh.github.com
 Port 443

Finalmente, encontré este artículo que resolvió y expuso el verdadero problema.

# github.com
Host github.com
    Hostname ssh.github.com
    ProxyCommand nc -X connect -x <PROXY-HOST>:<PORT> %h %p
    Port 443
    ServerAliveInterval 20
    User git

Este es mi archivo de configuración y ahora git funciona perfectamente bien a través de ssh.

Animesh Singh
fuente
3

Ejecutar:

nc -v -z <git-repository> <port>

Su salida debería verse así:

"Connection to <git-repository> <port> port [tcp/*] succeeded!"

Si lo consigues:

connect to <git-repository> <port> (tcp) failed: Connection timed out

Necesita editar su archivo ~ / .ssh / config. Agregue algo como lo siguiente:

Host example.com
Port 1234
ameen
fuente
55
No estoy seguro de que todos se hayan ncinstalado. ¿Qué se supone que es? Netcat o algo así?
Hack-R
2

Estaba teniendo este mismo problema, pero la respuesta que encontré fue diferente, pensé que alguien podría encontrar este problema, así que aquí está mi solución.

Tenía que la lista blanca 2 IPs de puerto 22, 80, 443, y 9418:

  • 192.30.252.0/22

  • 185.199.108.0/22

En caso de que estas IP no funcionen, puede ser porque se actualizaron, puede encontrar las más recientes en esta página .

Artur Grigio
fuente
0

La respuesta anterior me dio la información necesaria para resolver este problema. En mi caso, la url comenzaba incorrectamente con ssh: ///

Para verificar que la url en su configuración de git sea correcta, abra el archivo de configuración de git: -

git config --local -e

Verifique la entrada de la URL. NO debería tener ssh: /// al comienzo.

Entrada incorrecta

 url = ssh:///[email protected]:username/repo.git

Entrada correcta:

 url = [email protected]:username/repo.git

Si su URL es correcta, entonces el siguiente paso sería probar la respuesta anterior que sugiere cambiar el protocolo a http.

Manda QoP
fuente
0

Cuando accidentalmente cambié a una red wifi para invitados , recibí este error. Tuve que volver a mi red wifi predeterminada .

Ludder
fuente
0

Tuve este problema durante 2 horas y resulta que elimino la "s" de https y simplemente hago:

git clone -b <branchName> http:<projecturl>

Arreglado.

aPurpleDev
fuente
Por favor, cierre esta pregunta etiquetándola como respondida
Clément
0

PROBLEMA: Paso para generar el problema: git clone [email protected]: sramachand71 / test.git por primera vez en el nuevo ERROR del portátil ssh: conéctese al host github.com puerto 22: Tiempo de espera de conexión fatal: no se pudo leer desde el control remoto repositorio.

Asegúrese de tener los derechos de acceso correctos y de que exista el repositorio. SOLUCIÓN por primera vez en el sistema para clonar necesitamos dar comillas dobles para el comando clonar. $ git clone "[email protected]: sramachand71 / test.git" Me enfrento a este problema en el sistema incluso después de que todo fue correcto, pero noté al fin que la comilla doble es obligatoria para la url "repository_url.git" por primera vez o para un nuevo usuario en el sistema.

Shivaprasad R
fuente
0

Cambiar la URL del repositorio de ssh a https no es muy significativo para mí. Como yo prefiero sshmás httpsa causa de algún tipo de beneficios adicionales que no desea descartar. Las respuestas anteriores son bastante buenas y precisas. Si enfrenta este problema en GitLab, vaya a su página de documentación oficial y cambie su archivo de configuración de esa manera.

Host gitlab.com
  Hostname altssh.gitlab.com
  User git
  Port 443
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/gitlab
MD Nowshad Hasan
fuente
0

Reiniciar la computadora lo resolvió para mí.
Versión de Git: 2.27.0.windows.1
Versión del sistema operativo: Windows 10 v1909

Wenfang
fuente