为什么我在代理服务器下时无法克隆此GitHub存储库?

时间:2016-08-17 09:57:30

标签: git github git-clone

我是GIT和GitHub的新手,我觉得我有一些配置问题。

昨天我已经正确配置了本地GIT和我的GitHub帐户之间的SSH连接。它工作正常。

今天我去办公室,我在代理下并使用同一台笔记本电脑,我尝试将远程存储库(在我的GitHub帐户上)克隆到我的本地存储库。

代理在我的GIT上正确设置,实际上是:

$ git config --global http.proxy
http://XX.YY.ZZ.AAA:3228

这是我用于在Internet上导航的相同代理,我已将其设置为浏览器设置。

问题是,当我尝试将GitHub上的存储库克隆到我的本地存储库时,我收到此错误消息:

$ git clone git@github.com:AndreaNobili/recipes.git
Cloning into 'recipes'...
ssh: connect to host github.com port 22: Connection timed out
fatal: Could not read from remote repository.

如果我使用智能手机连接(不在代理服务器下)连接到Internet,则可以正常工作。

为什么呢?我错过了什么?

TNX

2 个答案:

答案 0 :(得分:1)

虽然您已配置了http代理,但您尚未指示Git使用http - 您已指定应使用ssh进行连接:

$ git clone git@github.com:AndreaNobili/recipes.git

事实上,您的错误消息是ssh超时:

ssh: connect to host github.com port 22: Connection timed out

这是因为您有阻止连接的防火墙。相反,将存储库指定为HTTP URL,Git将使用您已配置的公司代理:

$ git clone https://github.com/AndreaNobili/recipes.git

答案 1 :(得分:0)

您需要将环境变量设置为http_proxy curl,而libcurl似乎无法识别大写变量HTTP_PROXY

This link详细阐述了这一点:

  

不再允许/理解使用全部大写字母的变量“HTTP_PROXY”   (实际上是7.7.2)。

     

原因如下:   当CGI脚本从Web服务器中执行时,它们通常会得到   在执行脚本之前设置的环境变量。标题在   激活脚本的传入请求将转换为名为的变量   HTTP_ [标题]。

     

所以,如果有人写了一个CGI脚本,反过来又使用curl,你可以   实际上通过传递'代理来欺骗curl来使用你选择的http代理:   [yada yada]'标题。

     另一方面,使用小写的

http_proxy'完全可以理解   卷曲。