web-dev-qa-db-fra.com

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

J'ai suivi le guide git mais j'ai ce problème étrange lorsque je tente 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?

153
Massimo Ugues

Après avoir eu ce problème moi-même, j'ai trouvé une solution efficace 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 que le message indiquant un numéro de fichier incorrect lorsque vous utilisez Windows avec le shell MINGGW. Les utilisateurs de Linux auront juste la temporisation.

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/votre ISP ne bloquera pas cela) . Ce qui est également important, c'est que vous devez ssh à "ssh.github.com" au lieu de github.com . Sinon, vous rapporterez au serveur Web au lieu du serveur ssh . Ci-dessous toutes les étapes nécessaires à la résolution de ce problème.

Solution:

(Tout d’abord, assurez-vous que vous avez généré vos clés comme expliqué sur http://help.github.com/win-set-up-git/ )

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

Collez le code suivant dedans:

    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 ni le numéro de port.

186
Sam

Les informations clés sont écrites dans la réponse de Sam mais ne sont pas vraiment saillantes, alors clarifions les choses. 

"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 le commutateur -v:

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

est en fait hors de propos .

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

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

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

Solution actuelle: ignorer le "numéro de fichier incorrect" 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 faute de frappe dans l'adresse IP, mais le vôtre peut être différent.

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

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

Jusque-là, "numéro de fichier incorrect" n'est qu'un message d'erreur générique et la réponse à cette question est complète en indiquant "Ignorez-le et recherchez d'autres messages d'erreur". 

EDIT: Qwertie a mentionné que le message d'erreur est en fait générique, car il peut également arriver sur "Connexion refusée". Cela confirme l'analyse.

N'encombrez pas cette question avec des astuces générales, car elles n'ont rien à voir avec le sujet (et le titre) de cette question qui est "Erreur Git SSH:" Connexion à l'hôte: numéro de fichier incorrect "". Si vous utilisez -v, vous avez un message plus informatif qui mérite leur propre question, puis ouvrez une autre question, vous pouvez ensuite créer un lien vers celle-ci.

40

Cela a fonctionné pour moi:

ssh -v [email protected] -p 443
15

Vous pouvez aussi essayer de:

telnet example.com 22

pour voir si vous avez la connectivité au serveur. J'ai vu ce message et il s'est avéré que le VPN sur lequel j'étais se trouvait bloquait l'accès. Déconnecté du VPN et j'étais prêt à partir.

5
Fostah

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

5
Gerold Meisinger

Ce que j’ai trouvé, c’est que cela se produit lorsque votre connexion est médiocre ... Je l’ai eue il ya quelques minutes en poussant vers mon dépôt, il a continué à échouer et un moment après, la connexion a été interrompue.

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

Je crois que cela peut être causé par une chute de connexion de votre part ou de la leur.

4
frostymarvelous

Si SSH est bloqué plus de 22

il suffit de mettre à jour votre Origin en https 

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

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

git remote -v

3
marknery

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

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

2
Joe Lencioni

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

2
om39a

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

Vider le cache DNS a résolu le problème.

1
aboy021

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

Assurez-vous ensuite que le port 22 n'est pas bloqué (comme illustré dans cette question )

1
VonC

Sur Windows, j'ai essayé de quitter Git Bash et de le relancer, mais cela ne fonctionnait pas. Finalement, moi (frustré) j'ai redémarré et cela a fonctionné la prochaine fois

1
nischayn22

J'ai constaté ce problème lorsque j'accède à bitbucket dans un réseau d'entreprise, alors que git fonctionne correctement dans un 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".

0
ywu

La solution suivante a fonctionné pour moi lorsque j'ai essayé de passer en SSH sur une instance AWS EC2 Ubuntu à partir de mon ordinateur Windows 7 (32 bits) derrière un pare-feu d'entreprise, configurant Proxy

Ajoutez le bloc suivant à C:\Users\<YOUR_WINDOWS_USER>\.ssh\config fichier-

> 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 sur lequel vous souhaitez SSH.

0
KunalP

La création du fichier de configuration pour utiliser le port 443 n'a pas fonctionné pour moi. Finalement, j'ai essayé d'éteindre ma connexion wifi, de la rallumer et le problème a disparu. Bizarre. Solution idiote mais cela peut aider quelqu'un :)

0
teleco

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

0
daitangio