Git错误:致命:无法连接套接字(无效参数)

时间:2009-01-30 16:54:32

标签: windows git proxy msysgit

我的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克隆会产生以下结果:

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代理?我不知道是否值得追求这个。非常感谢任何帮助。

谢谢!

7 个答案:

答案 0 :(得分:60)

我有完全相同的错误;但~/.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

答案 1 :(得分:19)

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

  

H:> git clone   http://github.com/akitaonrails/vimfiles.git

此外,如果您使用的是自动代理配置文件(.pac),只需在文本编辑器中打开它即可。使用脚本语言非常容易,有一系列条件可以重定向到最有效的代理。找到允许通用流量的通道(通常是最后配置的代理),并按照上面的注释中的说明对其进行配置。

答案 2 :(得分:3)

你有SOCKS代理吗?如果你有,你可以试试 FreeCap 来强化你的git连接。我一直在用这种方式使用git。

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

编辑: 我通常使用FreeCap来强制 cmd.exe ,从那时起(几乎)我从该会话开始的所有cmdline程序也都被强化了。这就是我推荐Free Cap的原因,因为SocksCap(另一种选择)不会那样工作。

至于使用http.proxy,由于某种原因,我从未使用过mingw版本和我公司的http代理。

答案 3 :(得分:2)

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

  1. 我在家用机器上运行OpenSSH(Vista盒子)running under Cygwin
  2. 我正在使用Bitvise Tunnelier的Dynamic tunneling via integrated SOCKS/HTTP CONNECT proxy
  3. 然后我使用Freecap(感谢Marko)来“SOCKify”GIT-GUI。不幸的是,你必须单独设置每个.exe并从Freecap中运行它们,所以你不能通过SOCKify所有的git命令行工具。您可以在Freecap中设置显式命令行命令,但您必须单独设置每个命令行,这样会破坏目的。这就是为什么我只是在这个疯狂的复杂系统中设置GIT-GUI
  4. 令人惊讶的是,它似乎有效,尽管我还没有测试过一切。当然,它将克隆,这是一个开始。

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

答案 4 :(得分:1)

Python 2.7和ntlmaps在从GitHub获得407错误和其他垃圾后为我工作。

.gitconfig:

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

答案 5 :(得分:1)

这对我有用:

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

答案 6 :(得分:0)

我在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.