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

153

J'ai suivi le guide git mais j'ai ce problème étrange en essayant de me connecter à github:

$ ssh -v [email protected]
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

Ceci est 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?

Massimo Ugues
la source
J'ai ça aujourd'hui. Et il semble que Github était en panne.
ysrb
TL; DR: Ignorez le "numéro de fichier incorrect". Les informations que vous recherchez ne figurent pas dans ce message. Cela pourrait signifier n'importe quoi. Détails sur stackoverflow.com/a/22788046
Stéphane Gourichon

Réponses:

186

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

Message d'erreur:

    ssh -v [email protected]
    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 numéro de fichier incorrect que lorsque vous utilisez Windows en utilisant le shell MINGGW. Les utilisateurs de Linux auront juste expiré.

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 bloquera pas cela). Il est également important que vous ayez besoin de ssh sur "ssh.github.com" au lieu de github.com. Sinon, vous rapporterez au 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é sur http://help.github.com/win-set-up-git/ )

create file ~ / .ssh / config (fichier de configuration ssh situé dans votre répertoire utilisateur. Sur 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.

Effectuez 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.

Sam
la source
4
En d'autres termes, vous établissez des connexions SSH sur le port HTTPS .
Enrico Campidoglio
1
Au "Coller le code suivant dedans:", je ne comprends pas. Comment suis-je supposé résoudre un mauvais numéro de fichier? Dois-je le créer et l'enregistrer en tant que fichier bloc-notes?
David Dimalanta
27
Je reçois à la placessh: connect to host ssh.github.com port 443: Bad file number
cqcn1991
Cela a également fonctionné pour bitbucket.org, lorsque ma configuration précédente a soudainement cessé de fonctionner. La meilleure partie est que la seule chose que je devais faire était d'apporter des modifications au fichier de configuration SSH.
Kevin Condon
2
Lorsque vous utilisez un .ssh/configfichier sous Windows 7, assurez-vous d'avoir un User-Enviromental Var HOMEavec %USERPROFILE%comme valeur -> m'a aidé, lorsque mon ssh ne pouvait pas le trouver
Jook
40

Les informations clés sont écrites dans la réponse de @ Sam mais pas vraiment saillantes, alors soyons clairs.

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

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

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

est en fait hors de propos .

Si vous vous concentrez dessus, vous perdrez votre temps car ce n'est pas un indice sur le problème réel, juste un effet de l'exécution de ssh de git sur Windows. Ce n'est même pas un signe que l'installation ou la configuration de git ou ssh est incorrecte. Vraiment, ignorez-le .

La même commande sous 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: ignorez le "numéro de fichier incorrect" et obtenez plus d'informations

Focus sur les lignes ajoutées avec -vsur la 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 faute de frappe dans l'adresse IP, mais le vôtre peut être différent.

Cette question concerne-t-elle le "mauvais numéro de fichier" ou les nombreuses raisons pour lesquelles une connexion peut expirer?

Si quelqu'un peut prouver que le "mauvais numéro de fichier" n'apparaît que lorsque la raison réelle est "délai de connexion", alors il est logique d'expliquer pourquoi la connexion pourrait expirer.

Jusque-là, "mauvais numéro de fichier" n'est qu'un message d'erreur générique et cette question reçoit une réponse complète en disant "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 également arriver sur "Connexion refusée". Cela confirme l'analyse.

Veuillez ne pas encombrer cette question avec des conseils généraux et des réponses, ils n'ont rien à voir avec le sujet (et le titre) réel de cette question qui est "Erreur Git SSH:" Se connecter à l'hôte: Numéro de fichier incorrect "". Si -vvous utilisez un message plus informatif qui mérite leur propre question, ouvrez une autre question, vous pouvez alors créer un lien vers elle.

Stéphane Gourichon
la source
1
Oui, l'ajout de -v à ma scpligne de commande a ajouté "debug1: connectez-vous à l'adresse 216.34.181.70 port 22: Connexion refusée" avant "Mauvais numéro de fichier" donc ce n'est pas toujours une erreur "expiré".
Qwertie
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 ...
lilydjwg
5

Peut-être que votre pare-feu ou une application de blocage (PeerBlock etc.) bloque votre port

Gerold Meisinger
la source
5

Vous pouvez également essayer de:

telnet example.com 22

pour voir si vous êtes connecté au serveur. J'ai vu ce message et c'est finalement le VPN sur lequel j'étais bloquant l'accès. Déconnecté du VPN et j'étais prêt à partir.

Fostah
la source
4

Ce que j'ai trouvé, c'est que cela se produit lorsque votre connexion est mauvaise. Je l'ai eu il y a quelques minutes en poussant vers mon repo, il a continué à échouer et un certain temps après cela, la connexion est tombée en panne.

Après sa remontée, la poussée est immédiatement passée.

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

givré
la source
1
J'obtiens également cette erreur lorsque j'utilise mon Verizon Jetpack, qui semble interrompre ma connexion lorsque j'utilise ssh à partir de deux appareils distincts. Donc, quelque chose dans le Jetpack interrompt la connexion et j'obtiens l' bad file numbererreur lorsque la connexion est interrompue.
cod3monk3y
1
J'obtiens cette erreur lorsque j'utilise la connexion hotspot de mon téléphone avec mon ordinateur portable.
Lucas Morgan
@LucasMorgan pareil ici. C'est ce que j'utilisais lorsque cela s'est produit.
frostymarvelous
3

Si SSH est bloqué sur 22

mettez simplement à jour votre originhttps

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

vérifier que des modifications ont été apportées

git remote -v

marknery
la source
correct, mais vous devrez le faire pour chaque référentiel avec cette méthode. Dans un fichier de configuration, il est appliqué globalement.
Sam
2

J'ai juste eu le même problème et j'ai essayé toutes les solutions que j'ai pu trouver, mais aucune n'a fonctionné. Finalement, j'ai essayé de quitter Git Bash et de le rouvrir, et tout a parfaitement fonctionné.

Alors, essayez de quitter Git Bash et de le rouvrir.

Joe Lencioni
la source
2

Essayez de quitter l'instance git bash à travers laquelle vous avez effectué la configuration et essayez de la rouvrir. Cela a finalement fonctionné pour moi.

om39a
la source
10
« finalement travaillé pour moi» me fait penser que vous avez peut-être fait d'autres choses dans le processus qui ont pu y contribuer.
Jake Berger
1

Sous Windows, j'ai essayé de quitter git bash et de le relancer mais cela n'a pas fonctionné, finalement moi (frustré) j'ai redémarré et cela a fonctionné la prochaine fois :)

nischayn22
la source
1

Vérifiez que vous avez publié vos clés publiques via votre interface d'administration GitHub.

Ensuite, assurez-vous que le port 22 n'est pas bloqué d'une manière ou d'une autre (comme illustré dans cette question )

VonC
la source
1
>> Assurez-vous d'abord que «git» est le nom de votre compte utilisateur GitHub. Comme décrit dans le guide git: Testez tout. Pour vous assurer que tout fonctionne, vous devez maintenant SSH sur GitHub. Ne changez pas la partie «[email protected]». C'est censé être là. >> Ensuite, assurez-vous que le port 22 n'est pas bloqué d'une manière ou d'une autre -> J'ai désactivé le pare-feu Windows XP mais rien n'a changé.
Massimo Ugues
1

Dans mon cas, l'adresse IP de notre hôte git avait changé.

Le simple fait de vider le cache DNS a résolu le problème.

aboy021
la source
0

Créer le fichier de configuration pour utiliser le port 443 n'a pas fonctionné pour moi. Enfin, j'ai essayé de désactiver ma connexion wifi, de la rallumer et le problème a disparu. Bizarre. Solution idiote mais ça peut aider quelqu'un :)

téléco
la source
0

Vérifiez votre télécommande avec git remote -v Quelque chose comme ssh: /// gituser @ myhost: /git/dev.git

est faux à cause de la triple barre oblique ///

Daitangio
la source
0

J'ai vu ce problème lorsque j'accède à bitbucket dans le réseau d'entreprise, alors que git fonctionne bien dans le réseau domestique.

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

J'ai utilisé le protocole https pour contourner ce problème.

$ git pull https://[email protected]/myaccount/myrepo.git
Password for 'https://[email protected]':

Veuillez utiliser les mots correspondants pour remplacer "mon compte" et "myrepo".

ywu
la source
0

La solution suivante a fonctionné pour moi lorsque j'ai essayé de SSH dans une instance AWS EC2 Ubuntu à partir de mon PC Windows 7 (32 bits) derrière le pare-feu d'entreprise en configurant le proxy-

Ajoutez le bloc suivant au C:\Users\<YOUR_WINDOWS_USER>\.ssh\configfichier-

> 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>

Vous devrez ajouter une configuration similaire par hôte dans lequel vous souhaitez effectuer une connexion SSH.

KunalP
la source
-1

J'ai eu le problème lorsque j'avais une FileZilla-Connection ouverte sur Windows. FileZilla fermé -> Problème résolu.

Raphi
la source
-1

C'est la solution simple pour enregistrer un peu de frappe, vous pouvez utiliser les étapes suivantes dans git bash facilement.

(1) créer le référentiel distant

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

Remarque: si votre mot de passe contient le signe «@», utilisez «% 40» au lieu de cela

(2) Ensuite, faites tout ce que vous voulez avec le référentiel distant

ex:- git push origin master
tharakaucsc
la source
-2

Dans mon cas, le simple redémarrage du routeur WiFi a aidé.

Vijay Mali
la source