Git SSH错误:“连接到主机:错误的文件编号”

我跟着git指南,但是在尝试连接到github时遇到了这个奇怪的问题:

$ 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 

这是我在.ssh下的configuration文件

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

任何想法?

自己有这个问题后,我find了一个工作解决scheme。

错误信息:

  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 

在使用MINGGWshell的窗口上只能看到错误的文件编号信息。 Linux用户只会被超时。

问题:

SSH可能在端口22上被阻塞。你可以通过input来看到这个

  $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 

正如你所看到的状态是Filtered,这意味着有东西阻塞它。 你可以通过执行SSH到端口443(你的防火墙/ isp不会阻止这个)来解决这个问题。 什么也是重要的,你需要ssh到“ssh.github.com”而不是github.com。 否则,你会报告给networking服务器,而不是SSH服务器。 下面是解决这个问题所需的所有步骤。

解:

(首先确保你生成了你的密钥,就像http://help.github.com/win-set-up-git/上的解释一样);

创build文件〜/ .ssh / config(位于你的用户目录下的sshconfiguration文件,在windows上%USERPROFILE%\.ssh\config

粘贴下面的代码:

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

保存文件。

像往常一样执行SSH:

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

请注意,我不必提供用户名和端口号。

关键信息是写在@山姆的答案,但不是真的突出,所以让我们说清楚。

“错误的文件号码”不是信息,它只是在Windows上运行git的ssh的一个标志。

即使没有-v开关也显示的行:

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

实际上是无关紧要的

如果你专注于它,你会浪费你的时间,因为它不是什么实际问题的暗示,只是在Windows上运行git的ssh的效果。 这甚至不是一个标志,git或SSH安装或configuration是错误的。 真的, 无视它

Linux上的这个命令完全相同,而是为我提供了这个消息,这个消息提供了一个关于这个问题的实际提示:

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

实际解决scheme:忽略“坏文件编号”并获取更多信息

重点关注在命令行上添加-v行。 在我的情况是这样的:

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

我的问题是IP地址中的拼写错误,但是你可能会有所不同。

这个问题是关于“坏文件号”,还是连接超时的原因?

如果有人可以certificate只有当实际的原因是“连接超时”时才会出现“坏文件编号”,那么解决连接超时的问题是有道理的。

在这之前,“坏文件号”只是一个通用的错误信息,这个问题完全可以通过“忽略它并查找其他错误信息”来回答。

编辑:Qwertie提到,错误消息确实是通用的,因为它可以发生在“连接被拒绝”也。 这证实了分析。

请不要混淆这个问题的一般提示和回答,它们与这个问题的实际主题(和标题)无关,即“Git SSH错误:”连接到主机:错误的文件编号“”。 如果使用-v你有更多的信息,应该有自己的问题,那么打开另一个问题,然后你可以build立一个链接。

这对我工作:

 ssh -v git@github.com -p 443 

也许你的防火墙或拦截器应用程序(PeerBlock等)阻止你的端口

我发现的是,当你的连接不好的时候会发生这种情况。 我几分钟之前推到我的回购时,它一直在失败,一段时间后,连接closures了。

回来后,推动马上通过。

我相信这可能是由于你的一方或他们的连接不良而造成的。

您也可以尝试:

 telnet example.com 22 

看看你是否有连接到服务器。 我看到这个消息,结果是我正在阻止访问的VPN。 断开与VPN,我很好去。

如果SSH被阻止超过22

只需更新您的origin到https

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

validation是否进行了更改

git remote -v

尝试退出你通过设置的git bash实例,并尝试重新打开。 它最终为我工作。

我刚刚遇到了同样的问题,并尝试了我能find的所有解决scheme,但都没有成功。 最后,我试着退出Git Bash并重新打开它,一切正常。

所以,尝试退出Git Bash并重新打开它。

在Windows上,我试图做退出git bash并重新运行,但没有工作,最后我(沮丧)做了一个重新启动,它的工作下一次:)

仔细检查你是否已经通过GitHubpipe理界面发布了你的公钥。

然后确保端口22不被阻塞(如这个问题所示 )

在我的情况下,我们的git主机的IP地址已经改变。

只需刷新DNScaching就可以解决问题。

创buildconfiguration文件使用端口443不适合我。 最后,我试图closures我的无线连接,再次打开,问题消失了。 奇怪的。 愚蠢的解决scheme,但它可以帮助别人:)

用git remote -v检查你的远程服务器ssh:/// gituser @ myhost:/git/dev.git

是错误的,因为三/ /斜线

当我在Windows上打开FileZilla-Connection时遇到了问题。 closuresFileZilla – >问题解决了。

这是保存一些打字简单的解决scheme,你可以轻松地在git bash中使用以下步骤..

(1)创build远程存储库

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

注意:如果您的密码包含“@”符号,请使用“%40”而不是

(2)然后用远程仓库做任何你想要的

 ex:- git push origin master 

在我的情况下,只需重新启动WiFi路由器帮助。