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?
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.
Die wichtigsten Informationen sind in der Antwort von @ Sam geschrieben, aber nicht wirklich hervorstechend, also machen wir es klar.
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
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.
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.
Das hat für mich funktioniert:
ssh -v [email protected] -p 443
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.
Möglicherweise blockiert Ihre Firewall oder eine Blocker-Anwendung (PeerBlock usw.) Ihren Port
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.
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
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.
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.
In meinem Fall hatte sich die IP-Adresse unseres Git-Hosts geändert.
Das Leeren des DNS-Cache löste das Problem.
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 ).
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 :)
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.
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.
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 :)
Ü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