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


153

Ich habe die Git-Anleitung befolgt , aber ich habe dieses seltsame Problem, wenn ich versuche, eine Verbindung zu Github herzustellen:

$ 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

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?


Habe das heute. Und es scheint, dass Github unten war.
ysrb

TL; DR: "Falsche Dateinummer" ignorieren. Die gesuchten Informationen befinden sich nicht in dieser Nachricht. Es könnte alles bedeuten. Details auf stackoverflow.com/a/22788046
Stéphane Gourichon

Antworten:


186

Nachdem ich dieses Problem selbst hatte, fand ich eine Lösung, die für mich funktioniert:

Fehlermeldung:

    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

Unter Windows, das die MINGGW-Shell verwendet, wird die Meldung mit der falschen Dateinummer nur angezeigt. Linux-Benutzer erhalten nur eine Zeitüberschreitung.

Problem:

SSH ist wahrscheinlich an Port 22 blockiert. Sie können dies durch Eingabe 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 können, ist der Status gefiltert, was bedeutet, dass etwas ihn blockiert. Sie können dies lösen, indem Sie eine SSH an Port 443 durchführen (Ihre Firewall / ISP blockiert dies nicht). Es ist auch wichtig, dass Sie ssh zu "ssh.github.com" anstelle von github.com ssh. Andernfalls melden Sie sich beim Webserver anstelle des SSH-Servers. Im Folgenden finden Sie alle Schritte, die zur Lösung dieses Problems erforderlich sind.

Lösung:

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

Erstellen Sie die Datei ~ / .ssh / config (SSH-Konfigurationsdatei in Ihrem Benutzerverzeichnis. Wahrscheinlich unter Windows %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 durch:

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

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


4
Mit anderen Worten, Sie stellen SSH-Verbindungen über den HTTPS-Port her .
Enrico Campidoglio

1
Beim "Fügen Sie den folgenden Code ein:" verstehe ich nicht. Wie soll ich eine falsche Dateinummer beheben? Soll ich es erstellen und als Editor-Datei speichern?
David Dimalanta

27
Ich bekomme stattdessenssh: connect to host ssh.github.com port 443: Bad file number
cqcn1991

Dies funktionierte auch für bitbucket.org, als mein zuvor funktionierendes Setup plötzlich nicht mehr funktionierte. Das Beste daran ist, dass ich nur Änderungen an der SSH-Konfigurationsdatei vornehmen musste.
Kevin Condon

2
Wenn Sie eine .ssh/configDatei unter Windows 7 verwenden, stellen Sie sicher, dass Sie einen User-Enviromental Var HOMEmit %USERPROFILE%dem Wert -> hat mir geholfen, wenn mein SSH ihn nicht finden konnte
Jook

40

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

"Ungültige Dateinummer" ist nicht informativ, sondern nur ein Zeichen dafür, dass gits ssh unter Windows ausgeführt wird.

Die Zeile, die auch ohne -vSchalter 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 dies kein Hinweis auf das eigentliche Problem ist, sondern nur ein Effekt der 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. Ignoriere es wirklich .

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

Tatsächliche Lösung: Ignorieren Sie "falsche Dateinummer" und erhalten Sie weitere Informationen

Konzentrieren Sie sich auf Zeilen, die mit der -vBefehlszeile 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 Ihre kann anders sein.

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

Wenn jemand nachweisen kann, dass "falsche Dateinummer" nur angezeigt wird, wenn der eigentliche Grund "Verbindungszeitüberschreitung" ist, ist es sinnvoll zu klären, warum die Verbindungszeit abgelaufen sein könnte.

Bis dahin ist "falsche Dateinummer" nur eine allgemeine Fehlermeldung, und diese Frage wird vollständig mit den Worten "Ignorieren und nach anderen Fehlermeldungen suchen" beantwortet.

EDIT: Qwertie erwähnte, dass die Fehlermeldung tatsächlich generisch ist, da sie auch bei "Verbindung abgelehnt" auftreten kann. Dies bestätigt die Analyse.

Bitte überladen Sie diese Frage nicht mit allgemeinen Hinweisen und Antworten, sie haben nichts mit dem eigentlichen Thema (und Titel) dieser Frage zu tun, nämlich "Git SSH-Fehler:" Verbindung zum Host herstellen: Ungültige Dateinummer "". Wenn -vSie eine informativere Nachricht verwenden, die eine eigene Frage verdient, öffnen Sie eine andere Frage, und Sie können einen Link dazu erstellen.


1
Ja, durch Hinzufügen von -v zu meiner scpBefehlszeile wurde "debug1: Verbindung zu Adresse 216.34.181.70 Port 22: Verbindung abgelehnt" vor "Ungültige Dateinummer" hinzugefügt, sodass es sich nicht immer um einen "Timeout" -Fehler handelt.
Qwertie

Oh, Windows zeigt immer vage Fehlermeldungen an, selbst wenn das Tool traditionell unter Linux und anderen UNIX-ähnlichen Systemen verwendet wird ...
lilydjwg


5

Möglicherweise blockiert Ihre Firewall oder eine Blockeranwendung (PeerBlock usw.) Ihren Port


5

Sie können auch versuchen:

telnet example.com 22

um zu sehen, ob Sie eine Verbindung zum Server haben. Ich habe diese Nachricht gesehen und es stellte sich heraus, dass das VPN, in dem ich mich befand, den Zugriff blockierte. Vom VPN getrennt und ich konnte loslegen.


4

Was ich gefunden habe ist, dass dies passiert, wenn Ihre Verbindung schlecht ist. Ich hatte es vor ein paar Minuten, als ich auf mein Repo drückte, es schlug immer wieder fehl und eine Weile danach wurde die Verbindung unterbrochen.

Nachdem es wieder hochgekommen war, ging der Stoß sofort durch.

Ich glaube, es kann entweder durch einen Verbindungsabbruch von Ihrer oder ihrer Seite verursacht werden.


1
Ich erhalte diesen Fehler auch, wenn ich mein Verizon Jetpack verwende, das meine Verbindung zu trennen scheint, wenn ich ssh von zwei separaten Geräten verwende. Etwas im Jetpack trennt also die Verbindung, und ich erhalte die bad file numberFehlermeldung, wenn die Verbindung unterbrochen wird.
cod3monk3y

1
Ich erhalte diesen Fehler, wenn ich die Hotspot-Verbindung meines Telefons mit meinem Laptop verwende.
Lucas Morgan

@ LucasMorgan gleich hier. Das habe ich benutzt, als das passierte.
frostymarvelous

3

Wenn SSH über 22 blockiert ist

Aktualisieren Sie einfach Ihre originauf https

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

Überprüfen Sie, ob Änderungen vorgenommen wurden

git remote -v


Richtig, Sie müssen dies jedoch für jedes Repository mit dieser Methode tun. In einer Konfigurationsdatei wird es global angewendet.
Sam

2

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

Beenden Sie also Git Bash und öffnen Sie es erneut.


2

Versuchen Sie, die Git-Bash-Instanz zu beenden, über die Sie das Setup durchgeführt haben, und versuchen Sie erneut, sie zu öffnen. Es hat schließlich bei mir funktioniert.


10
" Irgendwann für mich gearbeitet" lässt mich denken, dass Sie möglicherweise andere Dinge in dem Prozess getan haben, die dazu beigetragen haben könnten.
Jake Berger

1

Unter Windows habe ich versucht, Git Bash zu beenden und erneut auszuführen, aber es hat nicht funktioniert. Schließlich habe ich (frustiert) einen Neustart durchgeführt und es hat beim nächsten Mal funktioniert :)


1

Stellen Sie sicher, dass Sie Ihre öffentlichen Schlüssel über Ihre GitHub-Verwaltungsoberfläche veröffentlicht haben.

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


1
>> Stellen Sie zunächst sicher, dass 'git' Ihr GitHub-Benutzerkontoname ist. Wie in der Git-Anleitung beschrieben: Testen Sie alles. Um sicherzustellen, dass alles funktioniert, werden Sie jetzt SSH an GitHub senden. Ändern Sie nicht den Teil "git@github.com". Das soll da sein. >> Dann stellen Sie sicher, dass Port 22 nicht irgendwie blockiert ist -> Ich habe die Windows XP-Firewall deaktiviert, aber nichts geändert.
Massimo Ugues

1

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

Durch einfaches Leeren des DNS-Cache wurde das Problem behoben.


0

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


0

Ü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

Ich habe dieses Problem gesehen, als ich auf Bitbucket im Unternehmensnetzwerk zugegriffen habe, während Git im Heimnetzwerk einwandfrei funktioniert.

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

Ich habe das https-Protokoll verwendet, um dies zu umgehen.

$ git pull https://myaccount@bitbucket.org/myaccount/myrepo.git
Password for 'https://myaccount@bitbucket.org':

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


0

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

Fügen Sie der C:\Users\<YOUR_WINDOWS_USER>\.ssh\configDatei den folgenden Block 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 ausführen möchten.


-1

Ich hatte das Problem, als ich eine offene FileZilla-Verbindung unter Windows hatte. Closed FileZilla -> Problem gelöst.


-1

Dies ist die einfache Lösung zum Speichern einiger Eingaben. Sie können die folgenden Schritte in git bash einfach ausführen.

(1) Erstellen Sie das Remote-Repository

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

Hinweis: Wenn Ihr Passwort das Zeichen '@' enthält, verwenden Sie stattdessen '% 40'

(2) Machen Sie dann mit dem Remote-Repository alles, was Sie wollen

ex:- git push origin master

-2

In meinem Fall hat ein einfacher Neustart des WLAN-Routers geholfen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.