我关注了git guide,但在尝试连接到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
下的配置文件Host github.com
User git
Hostname github.com
PreferredAuthentications publickey
IdentityFile "C:\Documents and Settings\mugues\.ssh\id_rsa"
TCPKeepAlive yes
IdentitiesOnly yes
有什么想法吗?
答案 0 :(得分:186)
自己遇到这个问题后,我找到了一个可行的解决方案。
错误讯息:
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
在Windows上使用MINGGW shell时,您只会看到错误的文件编号消息。 Linux用户只会获得Timed。
<强>问题:强>
SSH可能在端口22上被阻止。您可以通过键入
来查看 $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。 否则,您将向网络服务器而不是ssh服务器报告。 以下解决此问题所需的所有步骤。
<强>解决方案:强>
(首先请确保您按照http://help.github.com/win-set-up-git/)
中的解释生成了密钥创建文件〜/ .ssh / config(位于用户目录中的ssh配置文件。
在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 :))
请注意,我不必提供用户名和端口号。
答案 1 :(得分:40)
关键信息是用@Sam的答案写的,但并不是很显着,所以让我们说清楚。
即使没有-v
切换也显示的行:
ssh: connect to host (some host or IP address) port 22: Bad file number
实际上不相关。
如果你专注于它,你会浪费你的时间,因为它不是暗示实际问题是什么,只是在Windows上运行git的ssh的效果。它甚至不是git或ssh安装或配置错误的标志。真的,忽略它。
Linux上的相同命令为我生成了这条消息,它给出了一个关于这个问题的实际提示:
ssh: connect to host (some host or IP address) port 22: Connection timed out
专注于在命令行上添加-v
的行。就我而言,它是:
debug1: connect to address (some host or IP address) port 22: Attempt to connect timed out without establishing a connection
我的问题是IP地址中的拼写错误,但您的问题可能有所不同。
如果有人能证明&#34;文件编号错误&#34;仅在实际原因为&#34;连接超时时出现&#34;那么解决为什么连接会超时是有道理的。
在此之前,&#34;错误的文件编号&#34;只是一个通用的错误消息,并且通过说&#34;忽略它并寻找其他错误消息&#34;来完全回答这个问题。
编辑:Qwertie提到错误消息确实是通用的,因为它可能发生在&#34;连接被拒绝&#34;也。这证实了分析。
请不要用一般的提示和答案来混淆这个问题,它们与这个问题的实际主题(和标题)无关,这是&#34; Git SSH错误:“连接到主机:错误档案号“&#34;。如果使用-v
您有更多信息性消息值得他们自己提出问题,那么请打开另一个问题,然后您可以建立一个链接。
答案 2 :(得分:15)
这对我有用:
ssh -v git@github.com -p 443
答案 3 :(得分:5)
也许您的防火墙或阻止程序应用程序(PeerBlock等)阻止了您的端口
答案 4 :(得分:5)
您也可以尝试:
telnet example.com 22
查看您是否连接到服务器。我看到了这条消息,最终我正在阻止访问的VPN。脱离VPN,我很高兴。
答案 5 :(得分:4)
我发现,当您的连接很差时会发生这种情况。 几分钟前,当我推到我的仓库时,我已经收到了它,它一直在失败,一段时间后,连接断开了。
在它恢复之后,推动立刻就完成了。
我认为这可能是由于你身边或他们的连接断开造成的。
答案 6 :(得分:3)
如果SSH被阻止超过22
只需将您的origin
更新为https
git remote set-url origin https://github.com/ACCOUNT_NAME/REPO_NAME.git
验证是否已进行更改
git remote -v
答案 7 :(得分:2)
我遇到了同样的问题并尝试了我能找到的所有解决方案,但都没有效果。最后,我尝试退出Git Bash并重新打开它,一切都运作良好。
所以,试着退出Git Bash并重新打开它。
答案 8 :(得分:2)
尝试退出进行设置的git bash实例并尝试重新打开。它最终对我有用。
答案 9 :(得分:1)
仔细检查您是否通过GitHub管理界面发布了公钥。
然后确保端口22不会被阻止(如illustrated in this question)
答案 10 :(得分:1)
在Windows上我尝试退出git bash并重新运行但是没有工作,最后我(受挫)重启并且下次有效:)
答案 11 :(得分:0)
以下解决方案在尝试通过公司防火墙设置代理时从我的Windows 7(32位)PC连接到AWS EC2 Ubuntu实例时起作用 -
将以下块添加到C:\Users\<YOUR_WINDOWS_USER>\.ssh\config
文件 -
> 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>
您需要为每个要SSH的主机添加类似的配置。
答案 12 :(得分:0)
当我在公司网络中访问bitbucket时,我看到了这个问题,而git在家庭网络中运行良好。
$ git pull
ssh: connect to host bitbucket.org port 22: Bad file number
fatal: Could not read from remote repository.
我使用https协议解决了这个问题。
$ git pull https://myaccount@bitbucket.org/myaccount/myrepo.git
Password for 'https://myaccount@bitbucket.org':
请使用相应的词语替换“myaccount”和“myrepo”。
答案 13 :(得分:0)
使用git remote -v检查您的遥控器 就像是 ssh:/// gituser @ myhost:/git/dev.git
由于三重///斜杠,错误
答案 14 :(得分:0)
创建配置文件以使用端口443对我不起作用。最后我试图关闭我的wifi连接,再次打开它,问题消失了。奇怪的。愚蠢的解决方案,但它可以帮助某人:))
答案 15 :(得分:-1)
这是一个简单的解决方案 为了节省一些打字,你可以轻松地在git bash中使用以下步骤..
(1)创建远程存储库
git remote add origin https://{your_username}:{your_password}@github.com/{your_username}/repo.git
注意:如果您的密码包含'@'符号,请使用'%40'代替
(2)然后使用远程存储库执行任何操作
ex:- git push origin master
答案 16 :(得分:-1)
我在Windows上打开FileZilla-Connection时遇到了问题。 已关闭FileZilla - &gt;问题解决了。
答案 17 :(得分:-2)
在我的情况下,只需重新启动WiFi路由器就可以了。