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

我有msysGit(在Windows上的Git)在我的家庭机器上工作得很好,但在工作中,我们在一个微软的ISA代理后面,当我做一个git克隆时,我得到以下错误:

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环境variables:

 http://our-proxy-server:8088 

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

 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当然是一个authentication错误。

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

谢谢!

我有完全相同的错误; 但~/.gitconfig全局configuration文件是关键。

如果你有一个代理authentication,你需要把它放在:

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

它只是工作(与' git clone http: ')

详细介绍相同设置的博客示例: HTTP上的GIT克隆:谁知道?


如果在407中仍然失败,可能与在第二个HTTP GET上使用git-fetch失去身份validation令牌的问题有关 。 可能需要更新版本的libcurl 。


更新2011年1月: jbustamovej在他的答案(upvoted)中提到他的博客文章“ GitHub Behind Corporate Proxy ”,它增加了这一点:

需要注意的是, 如果您的login名具有反斜杠 (例如domain\login ,则必须转义反斜杠 ,如下所示:

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

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

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

另外,如果您正在使用自动代理configuration文件(.pac),只需在文本编辑器中打开即可。 遵循脚本语言相当容易,有很多条件可以redirect到最有效的代理。 find一个允许通用通信量(通常是最后configuration的代理),并按照上面的注释中所述进行configuration。

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

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

编辑:我通常使用FreeCap socksify cmd.exe ,从那时起(几乎)我从那个会话开始的所有cmdline程序也被塞住了。 这就是为什么我build议免费上限,因为SocksCap(另一种select)不以这种方式工作。

至于使用http.proxy,它由于某种原因,从来没有为我的明治版本和我的公司http代理工作。

我已经设法通过一个非常复杂的路线来运作。 就是这样:

  1. 我在我的家用机器上运行OpenSSH(一个Vista盒子) 在Cygwin下运行
  2. 我通过集成的SOCKS / HTTP CONNECT代理使用Bitvise Tunnelier的dynamic隧道 。
  3. 然后我使用Freecap (感谢Marko)来“SOCKify”GIT-GUI。 不幸的是,你必须单独设置每个.exe文件,并从Freecap内部运行它们,所以你不能单方面SOCK化所有的git命令行工具。 您可以在Freecap中设置显式的命令行命令,但是您必须单独设置每个命令,这种方式会使目标失败。 这就是为什么我在这个疯狂的复杂系统中设置GIT-GUI的原因

令人惊讶的是,这似乎工作,虽然我还没有testing一切。 它肯定会克隆,这是一个开始。

如果任何人有更好的解决scheme,我都耳熟能详。

Python 2.7和ntlmaps在得到来自GitHub的407错误和其他垃圾后为我工作。

.gitconfig:

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

这是什么对我有用:

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

我有这个问题在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.