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路由器帮助。