Error de Git SSH: "Conectar al host: número de archivo incorrecto"


153

Seguí la guía de git pero tengo este extraño problema al intentar conectarme a github:

$ ssh -v git@github.com
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Reading configuration data /c/Documents and Settings/mugues/.ssh/config
debug1: Applying options for github.com
debug1: Connecting to github.com [207.97.227.239] port 22.
debug1: connect to address 207.97.227.239 port 22: Attempt to connect timed out without establishing a connection
ssh: connect to host github.com port 22: Bad file number

Este es mi archivo de configuración en .ssh

Host github.com
    User git
    Hostname github.com
    PreferredAuthentications publickey
    IdentityFile "C:\Documents and Settings\mugues\.ssh\id_rsa"
    TCPKeepAlive yes
    IdentitiesOnly yes

¿Alguna idea?


Tengo esto hoy. Y parece que Github estaba caído.
ysrb

TL; DR: Ignorar "número de archivo incorrecto". La información que busca no está en ese mensaje. Podría significar cualquier cosa. Detalles en stackoverflow.com/a/22788046
Stéphane Gourichon

Respuestas:


186

Después de tener este problema, encontré una solución que me funciona:

Mensaje de error:

    ssh -v git@github.com
    OpenSSH_5.8p1, OpenSSL 1.0.0d 8 Feb 2011
    debug1: Connecting to github.com [207.97.227.239] port 22.
    debug1: connect to address 207.97.227.239 port 22: Connection timed out
    ssh: connect to host github.com port 22: Connection timed out
    ssh: connect to host github.com port 22: Bad file number

Solo verá el mensaje de número de archivo incorrecto cuando esté en Windows usando el shell MINGGW. Los usuarios de Linux solo se agotarán.

Problema:

SSH probablemente esté bloqueado en el puerto 22. Puede ver esto escribiendo

    $nmap -sS github.com -p 22
    Starting Nmap 5.35DC1 ( http://nmap.org ) at 2011-11-05 10:53 CET
    Nmap scan report for github.com (207.97.227.239)
    Host is up (0.10s latency).
    PORT   STATE    SERVICE
    22/tcp ***filtered*** ssh

    Nmap done: 1 IP address (1 host up) scanned in 2.63 seconds

Como puede ver, el estado está filtrado, lo que significa que algo lo está bloqueando. Puede resolver esto realizando un SSH al puerto 443 (su firewall / isp no bloqueará esto). También es importante que necesite enviar ssh a "ssh.github.com" en lugar de github.com. De lo contrario, informará al servidor web en lugar del servidor ssh. A continuación se detallan todos los pasos necesarios para resolver este problema.

Solución:

(En primer lugar, asegúrese de generar sus claves como se explica en http://help.github.com/win-set-up-git/ )

crear archivo ~ / .ssh / config (archivo de configuración ssh ubicado en su directorio de usuario. En Windows probablemente %USERPROFILE%\.ssh\config

Pegue el siguiente código en él:

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

Guarda el archivo.

Realice ssh como de costumbre:

$ssh -T github.com 
    $Enter passphrase for key '.......... (you can smile now :))

Tenga en cuenta que no tengo que proporcionar el nombre de usuario o el número de puerto.



1
En "Pegue el siguiente código en él:", no entiendo. ¿Cómo se supone que resuelva el número de archivo incorrecto? ¿Debo crearlo y guardarlo como archivo de bloc de notas?
David Dimalanta

27
En cambio, recibossh: connect to host ssh.github.com port 443: Bad file number
cqcn1991

Esto también funcionó para bitbucket.org, cuando mi configuración que funcionaba anteriormente de repente dejó de funcionar. La mejor parte es que lo único que tuve que hacer fue hacer cambios en el archivo de configuración SSH.
Kevin Condon

2
Cuando use un .ssh/configarchivo en Windows 7, asegúrese de tener un Var ambiental del usuario HOMEcon un %USERPROFILE%valor -> me ayudó, cuando mi ssh no pudo encontrarlo
Jook

40

La información clave está escrita en la respuesta de @ Sam pero no es realmente sobresaliente, así que hagámoslo claro.

El "número de archivo incorrecto" no es informativo, es solo un signo de ejecutar git's ssh en Windows.

La línea que aparece incluso sin -vinterruptor:

ssh: connect to host (some host or IP address) port 22: Bad file number

en realidad es irrelevante .

Si te enfocas en ello, perderás tu tiempo ya que no es una pista sobre cuál es el problema real, solo un efecto de ejecutar git's ssh en Windows. Ni siquiera es una señal de que la instalación o configuración de git o ssh sea incorrecta. Realmente, ignóralo .

El mismo comando en Linux produjo en su lugar este mensaje para mí, que dio una pista real sobre el problema:

ssh: connect to host (some host or IP address) port 22: Connection timed out

Solución real: ignore el "número de archivo incorrecto" y obtenga más información

Concéntrese en las líneas que se agregan con la -vlínea de comando. En mi caso fue:

debug1: connect to address (some host or IP address) port 22: Attempt to connect timed out without establishing a connection

Mi problema era un error tipográfico en la dirección IP, pero el tuyo puede ser diferente.

¿Es esta pregunta sobre el "número de archivo incorrecto", o sobre las muchas razones por las que una conexión podría agotar el tiempo de espera?

Si alguien puede probar que el "número de archivo incorrecto" solo aparece cuando el motivo real es el "tiempo de espera de conexión", entonces tiene sentido abordar por qué la conexión podría exceder el tiempo de espera.

Hasta ese momento, "número de archivo incorrecto" es solo un mensaje de error genérico y esta pregunta se responde completamente diciendo "ignórelo y busque otros mensajes de error".

EDITAR: Qwertie mencionó que el mensaje de error es de hecho genérico, ya que también puede ocurrir en "Conexión rechazada". Esto confirma el análisis.

No desordene esta pregunta con sugerencias y respuestas generales, no tienen nada que ver con el tema real (y el título) de esta pregunta que es "Error de Git SSH:" Conectarse al host: Número de archivo incorrecto "". Si lo usa -v, tiene un mensaje más informativo que merece su propia pregunta, luego abra otra pregunta y luego puede hacer un enlace.


1
Sí, agregando -v a mi scplínea de comando agregó "debug1: conectar a la dirección 216.34.181.70 puerto 22: Conexión rechazada" antes de "Número de archivo incorrecto", por lo que no siempre es un error de "tiempo de espera agotado".
Qwertie

Oh, Windows siempre muestra mensajes de error vagos, incluso cuando la herramienta se usa tradicionalmente en Linux y otros sistemas similares a UNIX ...
lilydjwg


5

Tal vez su firewall o una aplicación bloqueadora (PeerBlock, etc.) esté bloqueando su puerto


5

También puedes intentar:

telnet example.com 22

para ver si tiene conectividad con el servidor. Vi este mensaje y terminó siendo la VPN en la que estaba bloqueando el acceso. Me desconecté de la VPN y estaba listo para comenzar.


4

Lo que encontré es que esto sucede cuando tu conexión es deficiente. Lo tuve hace unos minutos cuando presioné para mi repositorio, seguía fallando y un tiempo después de eso, la conexión se cortó.

Después de que volvió a subir, el empujón se hizo de inmediato.

Creo que puede ser causado por una caída en la conexión desde su lado o el de ellos.


1
También recibo este error cuando uso mi Verizon Jetpack, que parece estar cayendo mi conexión cuando estoy usando ssh desde dos dispositivos separados. Entonces, algo en el Jetpack está cortando la conexión, y recibo el bad file numbererror cuando la conexión se cae.
cod3monk3y

1
Recibo este error cuando uso la conexión de punto de acceso de mi teléfono con mi computadora portátil.
Lucas Morgan

@LucasMorgan igual aquí. Eso era lo que estaba usando cuando sucedió esto.
frostymarvelous

3

Si SSH está bloqueado por más de 22

solo actualiza tu origina https

git remote set-url origin https://github.com/ACCOUNT_NAME/REPO_NAME.git

verificar que se hicieron cambios

git remote -v


correcto, sin embargo, tendrá que hacer esto para cada repositorio con este método. En un archivo de configuración se aplica globalmente.
Sam

2

Simplemente tuve el mismo problema y probé todas las soluciones que pude encontrar, pero ninguna funcionó. Finalmente, intenté salir de Git Bash y volver a abrirlo, y todo funcionó a la perfección.

Por lo tanto, intente salir de Git Bash y volver a abrirlo.


2

Intente salir de la instancia de git bash a través de la cual realizó la configuración e intente volver a abrirla. Eventualmente funcionó para mí.


10
" eventualmente funcionó para mí" me hace pensar que podría haber estado haciendo otras cosas en el proceso que pueden haber contribuido.
Jake Berger el

1

En Windows intenté salir de git bash y volver a ejecutar pero no funcionó, finalmente yo (frustrado) reinicié y funcionó la próxima vez :)


1

Verifique que haya publicado sus claves públicas a través de su interfaz de administración de GitHub.

Luego, asegúrese de que el puerto 22 no esté bloqueado de alguna manera (como se ilustra en esta pregunta )


1
>> Primero asegúrese de que 'git' sea el nombre de su cuenta de usuario de GitHub. Como se describe en la guía de git: prueba todo. Para asegurarse de que todo funcione, ahora usará SSH en GitHub. No cambie la parte "git@github.com". Eso se supone que debe estar allí. >> Luego, asegúrese de que el puerto 22 no esté bloqueado de alguna manera -> Deshabilité el firewall de Windows XP, pero nada cambió.
Massimo Ugues

1

En mi caso, la dirección IP de nuestro host git había cambiado.

Simplemente vaciar el caché DNS solucionó el problema.


0

Crear el archivo de configuración para usar el puerto 443 no funcionó para mí. Finalmente intenté apagar mi conexión wifi, volver a encenderla y el problema desapareció. Extraño. Solución tonta pero puede ayudar a alguien :)


0

Verifique su control remoto con git remote -v Algo así como ssh: /// gituser @ myhost: /git/dev.git

está mal por el triple /// barra oblicua


0

Vi este problema cuando accedo a bitbucket en la red corporativa, mientras que git funciona bien en la red doméstica.

$ git pull
ssh: connect to host bitbucket.org port 22: Bad file number
fatal: Could not read from remote repository.

Usé el protocolo https para solucionar esto.

$ git pull https://myaccount@bitbucket.org/myaccount/myrepo.git
Password for 'https://myaccount@bitbucket.org':

Utilice las palabras correspondientes para reemplazar "myaccount" y "myrepo".


0

La siguiente solución funcionó para mí cuando intenté ingresar SSH a la instancia de Ubuntu AWS EC2 desde mi PC con Windows 7 (32 bits) detrás del firewall corporativo que configuraba Proxy-

Agregue el siguiente bloque al C:\Users\<YOUR_WINDOWS_USER>\.ssh\configarchivo

> Host *
>      ProxyCommand "C:/Program Files/Git/mingw32/bin/connect.exe" -H <YOUR_PROXY_SERVER_HOST>:<YOUR_PROXY_SERVER_PORT> %h %p
>      IdentityFile "<PATH_OF_YOUR_IDENTITY_FILE>"
>      TCPKeepAlive yes
>      IdentitiesOnly yes
>     
>     Host <SERVER_HOST_NAME_OR_IP_YOU_WANT_TO_SSH_INTO>
>      Port <SERVER_HOST_PORT_YOU_WANT_TO_SSH_INTO>
>      Hostname <SERVER_HOST_NAME_OR_IP_YOU_WANT_TO_SSH_INTO>

Deberá agregar una configuración similar por host en el que desee SSH.


-1

Tuve el problema cuando tuve una FileZilla-Connection abierta en Windows. FileZilla cerrado -> Problema resuelto.


-1

Esta es la solución simple para guardar algo de mecanografía, puede usar los siguientes pasos en git bash fácilmente.

(1) crear el repositorio remoto

git remote add origin https://{your_username}:{your_password}@github.com/{your_username}/repo.git

Nota: Si su contraseña contiene el signo '@' use '% 40' en lugar de eso

(2) Luego, haga lo que quiera con el repositorio remoto

ex:- git push origin master

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.