【问题标题】:Git SSH error: "Connect to host: Bad file number"Git SSH 错误:“连接到主机:错误的文件号”
【发布时间】:2011-10-31 23:15:44
【问题描述】:

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

有什么想法吗?

【问题讨论】:

  • 今天收到了。而且看起来 Github 已经挂了。
  • TL;DR:忽略“错误文件号”。您要查找的信息不在该消息中。这可能意味着任何事情。详情stackoverflow.com/a/22788046

标签: git github ssh


【解决方案1】:

在自己遇到这个问题后,我找到了一个适合我的解决方案:

错误信息:

    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

您只会在使用 MINGGW shell 的 Windows 上看到错误文件编号消息。 Linux 用户只会超时。

问题:

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

如您所见,状态为“已过滤”,这意味着有东西在阻止它。 您可以通过对端口 443 执行 SSH 来解决此问题(您的防火墙/isp 不会阻止此问题)。 同样重要的是,您需要 ssh 到“ssh.github.com”而不是 github.com。 否则,您将向 web 服务器而不是 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 :))

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

【讨论】:

  • 换句话说,你建立SSH connections over the HTTPS port
  • 在“粘贴以下代码:”,我不明白。我该如何解决错误的文件号?我应该创建它并保存为记事本文件吗?
  • 我得到的是ssh: connect to host ssh.github.com port 443: Bad file number
  • 这也适用于 bitbucket.org,当时我之前的工作设置突然停止工作。最好的部分是我唯一要做的就是更改 SSH 配置文件。
  • 在 Windows 7 上使用 .ssh/config 文件时,请确保您有一个用户环境变量 HOME%USERPROFILE% 作为值 -> 帮助我,当我的 ssh 找不到它时
【解决方案2】:

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

"Bad file number" 不提供信息,它只是在 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

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

关注在命令行上使用-v 添加的行。在我的情况下是:

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

我的问题是 IP 地址打错了,但你的可能不一样。

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

如果有人可以证明“错误文件号”仅在实际原因是“连接超时”时出现,那么解决连接超时的原因是有意义的。

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

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

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

【讨论】:

  • 是的,在我的scp 命令行中添加 -v 在“错误文件号”之前添加了“debug1:连接到地址 216.34.181.70 端口 22:连接被拒绝”,因此它并不总是“定时”出”错误。
  • 哦,Windows 总是显示模糊的错误消息,即使该工具传统上用于 Linux 和其他类 UNIX 系统...
【解决方案3】:

这对我有用:

ssh -v git@github.com -p 443

【讨论】:

    【解决方案4】:

    也许您的防火墙或阻止程序(PeerBlock 等)正在阻止您的端口

    【讨论】:

      【解决方案5】:

      您也可以尝试:

      telnet example.com 22
      

      查看您是否已连接到服务器。我看到了这条消息,它最终是我所在的 VPN 阻止了访问。与 VPN 断开连接,我很高兴。

      【讨论】:

        【解决方案6】:

        我发现,当您的连接不佳时,就会发生这种情况。 几分钟前,当我推送到我的仓库时,它一直在失败,然后过了一会儿,连接断开了。

        回升后,立即推送。

        我认为这可能是由于您一方或他们一方的连接中断造成的。

        【讨论】:

        • 我在使用我的 Verizon Jetpack 时也遇到了这个错误,当我从两个单独的设备上使用 ssh 时,它似乎断开了我的连接。所以 Jetpack 中的某些东西正在断开连接,当连接断开时我收到 bad file number 错误。
        • 在笔记本电脑上使用手机的热点连接时出现此错误。
        【解决方案7】:

        如果 SSH 超过 22 年被阻止

        只需将您的 origin 更新为 https

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

        验证是否进行了更改

        git remote -v

        【讨论】:

        • 正确,但是您必须使用此方法对每个存储库执行此操作。在配置文件中,它被全局应用。
        【解决方案8】:

        尝试退出您进行设置的 git bash 实例并尝试重新打开。它最终对我有用。

        【讨论】:

        • 最终为我工作”让我觉得您在此过程中可能一直在做其他可能有所贡献的事情。
        【解决方案9】:

        我只是遇到了同样的问题,并尝试了我能找到的所有解决方案,但都没有奏效。最后,我尝试退出 Git Bash 并重新打开它,一切正常。

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

        【讨论】:

          【解决方案10】:

          在 Windows 上,我尝试退出 git bash 并重新运行,但没有成功,最后我(沮丧)重新启动,下一次成功了 :)

          【讨论】:

            【解决方案11】:

            仔细检查您是否已通过 GitHub 管理界面发布了您的公钥。

            然后确保端口 22 没有被阻塞(如illustrated in this question

            【讨论】:

            • >>首先确保 'git' 是你的 GitHub 用户帐户名。如 git 指南中所述:测试一切。为确保一切正常,您现在将通过 SSH 连接到 GitHub。不要更改“git@github.com”部分。那应该在那里。 >>然后确保端口 22 没有被阻止 --> 我禁用了 windows xp 防火墙,但没有任何改变。
            【解决方案12】:

            在我的例子中,我们的 git 主机的 IP 地址发生了变化。

            只需刷新 DNS 缓存即可解决问题。

            【讨论】:

              【解决方案13】:

              创建配置文件以使用端口 443 对我不起作用。最后我试图关闭我的wifi连接,再次打开它,问题就消失了。诡异的。愚蠢的解决方案,但它可能会帮助某人:)

              【讨论】:

                【解决方案14】:

                用 git remote -v 检查你的遥控器 就像是 ssh:///gituser@myhost:/git/dev.git

                因为三重///斜线而出错

                【讨论】:

                  【解决方案15】:

                  我在公司网络中访问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”。

                  【讨论】:

                    【解决方案16】:

                    以下解决方案在我尝试从公司防火墙设置代理后的 Windows 7(32 位)PC SSH 到 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 连接的主机添加类似的配置。

                    【讨论】:

                      【解决方案17】:

                      我在 Windows 上打开 FileZilla-Connection 时遇到了问题。 关闭 FileZilla -> 问题解决了。

                      【讨论】:

                        【解决方案18】:

                        这是简单的解决方案 为了节省一些输入,您可以轻松地在 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
                        

                        【讨论】:

                          【解决方案19】:

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

                          【讨论】:

                            猜你喜欢
                            • 1970-01-01
                            • 2015-04-29
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 2023-03-20
                            • 2022-08-19
                            • 2012-08-07
                            相关资源
                            最近更新 更多