153 votes

Erreur Git SSH : "Connexion à l'hôte : mauvais numéro de fichier"

J'ai suivi le guide git mais j'ai ce problème étrange lorsque j'essaie de me connecter à 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

Voici mon fichier de configuration sous .ssh

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

Une idée ?

0 votes

J'ai reçu ça aujourd'hui. Et il semble que Github était en panne.

0 votes

TL;DR : Ignorez le message "mauvais numéro de fichier". L'information que vous recherchez n'est pas dans ce message. Cela peut signifier n'importe quoi. Détails sur stackoverflow.com/a/22788046

187voto

Sam Points 1546

Après avoir moi-même rencontré ce problème, j'ai trouvé une solution qui fonctionne pour moi :

Message d'erreur :

    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

Vous ne verrez le message de mauvais numéro de fichier que si vous êtes sous Windows et que vous utilisez le shell MINGGW. Les utilisateurs de Linux obtiendront simplement le message Timed out.

Problème :

SSH est probablement bloqué sur le port 22. Vous pouvez le voir en tapant

    $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

Comme vous pouvez le voir, l'état est Filtré, ce qui signifie que quelque chose le bloque. Vous pouvez résoudre ce problème en effectuant un SSH sur le port 443 (votre pare-feu / isp ne le bloquera pas). Il est également important de noter que vous devez effectuer un SSH vers "ssh.github.com" au lieu de github.com. Sinon, vous serez dirigé vers le serveur web au lieu du serveur ssh. Vous trouverez ci-dessous toutes les étapes nécessaires pour résoudre ce problème.

Solution :

(Tout d'abord, assurez-vous d'avoir généré vos clés comme expliqué dans la rubrique http://help.github.com/win-set-up-git/ )

créer le fichier ~/.ssh/config (fichier de configuration ssh situé dans votre répertoire utilisateur. Sous Windows, probablement %USERPROFILE%\.ssh\config

Collez-y le code suivant :

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

Enregistrez le fichier.

Exécutez ssh comme d'habitude :

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

Notez que je n'ai pas à fournir le nom d'utilisateur ou le numéro de port.

4 votes

En d'autres termes, vous établissez Connexions SSH sur le port HTTPS .

1 votes

Au moment de "Coller le code suivant dans le fichier :", je ne comprends pas. Comment suis-je censé résoudre le mauvais numéro de fichier ? Dois-je le créer et le sauvegarder en tant que fichier notepad ?

27 votes

A la place, j'obtiens ssh: connect to host ssh.github.com port 443: Bad file number

40voto

L'information clé est écrite dans la réponse de @Sam mais n'est pas vraiment saillante, alors rendons-la claire.

"Mauvais numéro de fichier" n'est pas informatif, c'est seulement un signe de l'exécution de ssh de git sous Windows.

La ligne qui apparaît même sans -v interrupteur :

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

est en fait non pertinent .

Si vous vous concentrez sur ce point, vous perdrez votre temps car il ne s'agit pas d'un indice sur le problème réel, mais simplement d'un effet de l'exécution de ssh de git sous Windows. Ce n'est même pas un signe que l'installation ou la configuration de git ou ssh est incorrecte. Vraiment, l'ignorer .

La même commande sur Linux a produit à la place ce message pour moi, qui a donné un indice réel sur le problème :

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

Solution réelle : ignorer le "mauvais numéro de fichier" et obtenir plus d'informations.

Concentrez-vous sur les lignes ajoutées avec -v en ligne de commande. Dans mon cas, c'était :

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

Mon problème était une erreur de frappe dans l'adresse IP, mais le vôtre peut être différent.

Cette question concerne-t-elle un "mauvais numéro de fichier" ou les nombreuses raisons pour lesquelles une connexion peut être interrompue ?

Si quelqu'un peut prouver que le "mauvais numéro de fichier" n'apparaît que lorsque la raison réelle est "le temps de connexion", alors il est logique de se pencher sur la raison pour laquelle la connexion peut être interrompue.

En attendant, "mauvais numéro de fichier" n'est qu'un message d'erreur générique et la réponse à cette question consiste à dire "ignorez-le et cherchez d'autres messages d'erreur".

EDIT : Qwertie a mentionné que le message d'erreur est en effet générique, car il peut se produire sur "Connection refused" également. Cela confirme l'analyse.

Veuillez ne pas encombrer cette question avec des conseils et des réponses d'ordre général, ils n'ont rien à voir avec le sujet réel (et le titre) de cette question qui est "Git SSH error : "Connect to host : Bad file number"". Si vous utilisez -v vous avez des messages plus informatifs qui méritent leur propre question, alors ouvrez une autre question, vous pourrez alors faire un lien vers celle-ci.

1 votes

Ouaip, en ajoutant -v à mon scp La ligne de commande a ajouté "debug1 : connect to address 216.34.181.70 port 22 : Connection refused" avant "Bad file number" pour que ce ne soit pas toujours une erreur "timed out".

0 votes

Oh, Windows affiche toujours de vagues messages d'erreur, même lorsque l'outil est traditionnellement utilisé sur Linux et d'autres systèmes de type UNIX...

15voto

Cela a marché pour moi :

ssh -v git@github.com -p 443

5voto

Fostah Points 1103

Vous pouvez aussi essayer :

telnet example.com 22

pour voir si vous avez une connectivité avec le serveur. J'ai vu ce message et il s'est avéré que le VPN sur lequel j'étais bloquait l'accès. Je me suis déconnecté du VPN et j'étais prêt à partir.

4voto

frostymarvelous Points 972

Ce que j'ai trouvé, c'est que cela se produit lorsque votre connexion est mauvaise. J'ai eu ce problème il y a quelques minutes en poussant vers mon dépôt, ça n'a pas arrêté d'échouer et peu de temps après, la connexion est tombée.

Après qu'il soit remonté, la poussée est passée immédiatement.

Je crois que cela peut être causé par une baisse de la connexion de votre côté ou du leur.

1 votes

J'obtiens également cette erreur lorsque j'utilise mon Jetpack de Verizon, qui semble interrompre ma connexion lorsque j'utilise ssh à partir de deux appareils distincts. Donc quelque chose dans le Jetpack coupe la connexion, et j'obtiens l'erreur suivante bad file number erreur lorsque la connexion est interrompue.

1 votes

Je reçois cette erreur lorsque j'utilise la connexion hotspot de mon téléphone avec mon ordinateur portable.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X