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

时间:2011-08-22 08:29:48

标签: git github ssh

我关注了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

有什么想法吗?

18 个答案:

答案 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的答案写的,但并不是很显着,所以让我们说清楚。

&#34;错误的文件编号&#34;没有提供信息,它只是在Windows上运行git的ssh的标志。

即使没有-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

实际解决方案:忽略&#34;错误的文件编号&#34;并获得更多信息

专注于在命令行上添加-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;只是一个通用的错误消息,并且通过说&#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路由器就可以了。