it-swarm.com.de

Git SSH-Fehler: "Verbindung zum Host herstellen: Ungültige Dateinummer"

Ich folgte der git Anleitung , aber ich habe dieses seltsame Problem, wenn ich mich mit github verbinden möchte:

$ 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

Dies ist meine Konfigurationsdatei unter .ssh

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

Irgendeine Idee?

153
Massimo Ugues

Nachdem ich dieses Problem selbst hatte, fand ich eine funktionierende Lösung für mich.

Fehlermeldung: 

    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

Sie sehen die Meldung mit der falschen Dateinummer nur, wenn Sie unter Windows die MINGGW-Shell verwenden. Linux-Benutzer erhalten nur das Zeitlimit.

Problem:

SSH ist wahrscheinlich an Port 22 gesperrt. Sie können dies durch Eingeben sehen

    $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

Wie Sie sehen, ist der Status "Filtered", was bedeutet, dass etwas blockiert wird. Sie können dies lösen, indem Sie ein SSH an Port 443 ausführen (Ihre Firewall/ISP blockiert dies nicht). Was auch wichtig ist, müssen Sie dies tun ssh an "ssh.github.com" statt an github.com . Sonst melden Sie sich an den Webserver statt an den ssh-Server . Nachfolgend alle Schritte, die zur Lösung dieses Problems erforderlich sind.

Lösung:

(Stellen Sie zunächst sicher, dass Sie Ihre Schlüssel generiert haben, wie auf http://help.github.com/win-set-up-git/ erläutert).

erstellen Sie die Datei ~/.ssh/config (die ssh-Konfigurationsdatei befindet sich in Ihrem Benutzerverzeichnis. Unter Windows wahrscheinlich %USERPROFILE%\.ssh\config

Fügen Sie den folgenden Code ein:

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

Speicher die Datei.

Führen Sie ssh wie gewohnt aus:

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

Beachten Sie, dass ich weder den Benutzernamen noch die Portnummer angeben muss.

186
Sam

Die wichtigsten Informationen sind in der Antwort von @ Sam geschrieben, aber nicht wirklich hervorstechend, also machen wir es klar. 

"Bad file number" ist nicht informativ, es ist nur ein Zeichen dafür, dass gits ssh unter Windows läuft.

Die Zeile, die auch ohne -v erscheint:

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

ist eigentlich irrelevant .

Wenn Sie sich darauf konzentrieren, verschwenden Sie Ihre Zeit, da es sich nicht um einen Hinweis auf das eigentliche Problem handelt, sondern nur durch die Ausführung von gits ssh unter Windows. Es ist nicht einmal ein Zeichen dafür, dass die Installation oder Konfiguration von git oder ssh falsch ist. Wirklich, ignoriere es .

Der gleiche Befehl unter Linux erzeugte stattdessen diese Nachricht für mich, die einen tatsächlichen Hinweis auf das Problem gab:

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

Aktuelle Lösung: Ignorieren Sie die "falsche Dateinummer" und erhalten Sie weitere Informationen

Konzentrieren Sie sich auf die Zeilen, die mit -v in der Befehlszeile hinzugefügt werden. In meinem Fall war es:

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

Mein Problem war ein Tippfehler in der IP-Adresse, aber Ihr kann anders sein.

Handelt es sich bei dieser Frage um "schlechte Dateinummer" oder um die vielen Gründe, warum eine Verbindung unterbrochen werden konnte?

Wenn jemand nachweisen kann, dass "schlechte Dateinummer" nur angezeigt wird, wenn der eigentliche Grund "Verbindungszeitüberschreitung" ist, ist es sinnvoll, die Ursache für die Verbindungsunterbrechung anzugeben.

Bis dahin ist "bad file number" nur eine generische Fehlermeldung und diese Frage wird vollständig beantwortet, indem Sie "Ignorieren und nach anderen Fehlermeldungen suchen" sagen. 

EDIT: Qwertie erwähnte, dass die Fehlermeldung in der Tat generisch ist, da es bei "Verbindung abgelehnt" auch passieren kann. Dies bestätigt die Analyse.

Bitte füllen Sie diese Frage nicht mit allgemeinen Hinweisen und Antworten aus. Sie haben nichts mit dem eigentlichen Thema (und Titel) dieser Frage zu tun, nämlich "Git SSH-Fehler:" Verbindung zum Host: Ungültige Dateinummer ". Wenn Sie -v verwenden, haben Sie eine informativere Nachricht, die eine eigene Frage verdient. Öffnen Sie dann eine weitere Frage, und Sie können einen Link darauf setzen.

40

Das hat für mich funktioniert:

ssh -v [email protected] -p 443
15

Sie können auch versuchen:

telnet example.com 22

um zu sehen, ob Sie eine Verbindung zum Server haben. Ich sah diese Nachricht und es endete, dass das VPN, auf dem ich mich befand, den Zugriff blockierte. Vom VPN getrennt und ich war gut zu gehen.

5
Fostah

Möglicherweise blockiert Ihre Firewall oder eine Blocker-Anwendung (PeerBlock usw.) Ihren Port

5

Was ich herausgefunden habe, ist, dass dies passiert, wenn Ihre Verbindung schlecht ist ... Ich hatte es vor ein paar Minuten, als ich zu meinem Repo wechselte, es fiel immer weiter aus und eine Weile danach brach die Verbindung ab.

Nachdem es wieder hochgefahren war, ging der Push sofort durch.

Ich glaube, dass dies entweder durch einen Verbindungsabfall von Ihrer oder Ihrer Seite verursacht werden kann.

4
frostymarvelous

Wenn SSH über 22 gesperrt ist

aktualisieren Sie einfach Ihre Origin auf https 

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

vergewissern Sie sich, dass Änderungen vorgenommen wurden

git remote -v

3
marknery

Ich hatte nur das gleiche Problem und versuchte jede Lösung, die ich finden konnte, aber keine funktionierte. Schließlich versuchte ich, Git Bash zu beenden und es erneut zu öffnen, und alles funktionierte perfekt.

Versuchen Sie also, Git Bash zu beenden und es erneut zu öffnen.

2
Joe Lencioni

Versuchen Sie, die git bash-Instanz zu beenden, über die Sie das Setup vorgenommen haben, und versuchen Sie es erneut zu öffnen. Es hat schließlich für mich funktioniert.

2
om39a

In meinem Fall hatte sich die IP-Adresse unseres Git-Hosts geändert.

Das Leeren des DNS-Cache löste das Problem.

1
aboy021

Vergewissern Sie sich, dass Sie Ihre öffentlichen Schlüssel über die GitHub-Administrationsoberfläche veröffentlicht haben.

Stellen Sie dann sicher, dass Port 22 nicht irgendwie blockiert ist (als dargestellt in dieser Frage ).

1
VonC

Unter Windows habe ich versucht, git bash zu beenden und neu zu starten, aber es hat nicht funktioniert. Endlich (frustated) hat ich einen Neustart gemacht und es hat beim nächsten Mal funktioniert :)

1
nischayn22

Ich habe dieses Problem gesehen, als ich auf Bitbucket im Unternehmensnetzwerk zugreife, während git im Heimnetzwerk gut funktioniert.

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

Um dieses Problem zu umgehen, habe ich das https-Protokoll verwendet.

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

Bitte verwenden Sie entsprechende Wörter, um "myaccount" und "myrepo" zu ersetzen.

0
ywu

Die folgende Lösung funktionierte für mich, als ich versuchte, von meinem Windows 7-PC (32 Bit) hinter der Unternehmensfirewall SSH in die AWS EC2 Ubuntu-Instanz einzurichten.

Fügen Sie den folgenden Block zu C:\Users\<YOUR_WINDOWS_USER>\.ssh\config file- hinzu.

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

Sie müssen eine ähnliche Konfiguration pro Host hinzufügen, in den Sie SSH aufnehmen möchten.

0
KunalP

Das Erstellen der Konfigurationsdatei für Port 443 hat für mich nicht funktioniert. Schließlich versuchte ich, meine WLAN-Verbindung auszuschalten, sie wieder einzuschalten und das Problem verschwand. Seltsam. Dumme Lösung, aber es kann jemandem helfen :)

0
teleco

Überprüfen Sie Ihre Fernbedienung mit git remote -v So etwas wie Ssh: /// gituser @ myhost: /git/dev.git 

ist falsch wegen des dreifachen /// Schrägstrichs

0
daitangio