【问题标题】:Git error: fatal: unable to connect a socket (Invalid argument)Git错误:致命:无法连接套接字(无效参数)
【发布时间】:2010-10-04 12:30:21
【问题描述】:

我的 msysGit(Windows 上的 Git)在我的家用计算机上运行良好,但在工作中,我们位于 Microsoft ISA 代理后面,执行 git clone 时出现以下错误:

H:\>git clone git://github.com/akitaonrails/vimfiles.git
Initialized empty Git repository in H:/vimfiles/.git/
github.com[0: 65.74.177.129]: errno=Invalid argument
fatal: unable to connect a socket (Invalid argument)

我尝试将 http_proxy 环境变量设置为:

http://our-proxy-server:8088

我已经设置了 git http.proxy 配置指令:

git config --global http.proxy http://our-proxy-server:8088

以上都没有区别。

使用 http:// 而不是 git:// 进行 git clone 会产生以下结果:

H:\>git clone http://github.com/akitaonrails/vimfiles.git
Initialized empty Git repository in H:/vimfiles/.git/
fatal: http://github.com/akitaonrails/vimfiles.git/info/refs download error - The    requested URL returned error: 407

407 当然是身份验证错误。

所以我的问题是:有没有人设法让 git 从代理后面工作,特别是 ISA 代理?我不知道这是否值得追求。非常感谢任何帮助。

谢谢!

【问题讨论】:

  • 刚刚添加了另一个潜在的修复方法
  • 感谢您的反馈。我认为你现在有一个 Git1.6.4?

标签: windows git proxy msysgit


【解决方案1】:

你有 SOCKS 代理吗?如果你有,你可以尝试 FreeCap 来整理你的 git 连接。我用这种方式使用 git 有一段时间了。

如果没有,仍然尝试 FreeCap。 IIRC 它可能可以使用 http 代理,但我还没有尝试过。

编辑: 我通常使用 FreeCap 对 cmd.exe 进行 socksify,从那时起(几乎)我从该会话启动的所有 cmdline 程序也都进行了 socksified。这就是我推荐 Free Cap 的原因,因为 SocksCap(另一种替代方案)不能那样工作。

至于使用 http.proxy,由于某种原因,它对我的​​ mingw 版本和我公司的 http 代理不起作用。

【讨论】:

  • 感谢您,FreeCap 看起来很有趣。你能详细说明你是如何使用 Git 的吗?
【解决方案2】:

我遇到了完全相同的错误;但~/.gitconfig global config file 是关键。

如果你有一个带身份验证的代理,你需要把它放进去:

git config --global http.proxy http://login:password@our-proxy-server:8088

而且它可以正常工作(使用'git clone http:')

详细介绍相同设置的博客示例:GIT clone over HTTP: who knew?


如果在 407 中仍然失败,则可能与 git-fetch losing authentication tokens on the second HTTP GET 的问题有关。可能需要more recent version of libcurl


2011 年 1 月更新:jbustamovejhis answer (upvoted) 他的博文“GitHub Behind Corporate Proxy”中提到,并添加了以下内容:

请务必注意,如果您的登录有反斜杠,如domain\login您必须转义反斜杠,如:

git config --global http.proxy http://domain\\\login:password@our-proxy-server:8088

【讨论】:

  • 感谢您的提示,但我无法正常工作。即使我在环境和 .gitconfig 中都设置了代理(包含用户名和密码),它仍然给我一个 407(身份验证)错误。
  • 我刚刚又试了一次,因为 msysGit 已经更新,并且它工作正常。欢呼!我猜 libcurl 肯定已经更新到最新版本了。
  • 查尔斯,你有什么版本?使用新版本,代理配置放在哪里?我遇到了同样的问题,我尝试了很多礼貌。
【解决方案3】:

我设法通过一条非常复杂的路线让它工作。方法如下:

  1. 我的家用机器(Vista 机器)上运行 OpenSSH running under Cygwin
  2. 我正在使用 Bitvise Tunnelier 的 Dynamic tunneling via integrated SOCKS/HTTP CONNECT proxy
  3. 然后我使用Freecap(感谢 Marko)来“SOCKify”GIT-GUI。不幸的是,您必须单独设置每个 .exe 并从 Freecap 中运行它们,因此您不能通用地对所有 git 命令行工具进行 SOCKify。您可以在 Freecap 中设置显式命令行命令,但您必须单独设置每个命令,这与目的不符。这就是为什么我刚刚在这个疯狂的精心设计的系统中设置了 GIT-GUI

令人惊讶的是,它似乎有效,虽然我还没有测试所有东西。当然,它会克隆,这是一个开始。

如果有人有更好的解决方案,我会全力以赴。

【讨论】:

    【解决方案4】:

    即使在配置代理之后,您也可能无法连接,因为代理不允许 git 协议流量。在这种情况下,您可能想尝试使用“http”而不是“git”

    H:>git 克隆 http://github.com/akitaonrails/vimfiles.git

    另外,如果您使用的是自动代理配置文件 (.pac),只需在文本编辑器中打开它即可。这是一种很容易遵循的脚本语言,有很多条件可以重定向到最有效的代理。找到允许通用流量的那个(通常是最后配置的代理),然后按照上面评论中的说明进行配置。

    【讨论】:

    • 太棒了!我在 git 上遇到了类似的问题,它给出了这个错误“无法连接到套接字(没有错误)”。我配置了我的 --global http.proxy 并在克隆时使用了 http 而不是 git,它工作正常。
    • 这正是我的问题所在。我不必为代理的东西而烦恼。
    • 显然,这仅适用于通过 http 托管的 git repos。 IE。它适用于基于 github.com 的存储库。对于其他人,您需要通过防火墙/代理让 git 工作
    【解决方案5】:

    我在 windows7 上遇到过这个问题:

    $ git clone git://github.com/facebook/php-sdk.git
    Initialized empty Git repository in c:/Users/Jay/temp/php-sdk/.git/
    github.com[0: 207.97.227.239]: errno=No error
    fatal: unable to connect a socket (No error)
    

    终于意识到是AVG杀毒软件在运行。我在 AVG 中禁用了“常驻盾牌”,现在就像一个魅力一样工作。

    $ git clone git://github.com/facebook/php-sdk.git
    Initialized empty Git repository in c:/Users/Jay/temp2/php-sdk/.git/
    remote: Counting objects: 223, done.
    remote: Compressing objects: 100% (179/179), done.
    emote: Total 223 (delta 84), reused 0 (delta 0)
    Receiving objects: 100% (223/223), 37.32 KiB, done.
    Resolving deltas: 100% (84/84), done.
    

    【讨论】:

      【解决方案6】:

      Python 2.7 和 ntlmaps 在从 GitHub 收到 407 错误和其他垃圾信息后为我工作。

      .gitconfig:

      [http]
            proxy = http://127.0.0.1:5865
      

      【讨论】:

        【解决方案7】:

        这对我有用:

        git config --global http.proxy http://login:password@PROXY_SERVER:PORT
        git config --global http.sslVerify false
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-10-05
          • 1970-01-01
          • 2022-11-14
          • 2018-06-16
          • 2012-07-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多