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?
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.
Les informations clés sont écrites dans la réponse de Sam mais ne sont pas vraiment saillantes, alors clarifions les choses.
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
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.
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.
Cela a fonctionné pour moi:
ssh -v [email protected] -p 443
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.
Peut-être que votre pare-feu ou une application de blocage (PeerBlock, etc.) bloque votre port
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.
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
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.
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.
Dans mon cas, l'adresse IP de notre hôte git avait changé.
Vider le cache DNS a résolu le problème.
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 )
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
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".
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.
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 :)
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