连接后git从代理返回http错误407


95

使用git从PC连接到github时出现问题。系统赢7。

我通过代理进行连接,因此我在git config文件中指定了它(在普通git文件夹中和git repo文件夹中)。为此,我在git bush中输入了下一行:

$ git config --global http.proxy http://<username>:<userpsw>@<proxy>:<port>

它在其他程序(例如:maven)上的工作方式如下所示:

<username> - my login to our corp system
<userpsw> -my password to corporat system
<proxy> - 10.65.64.77
<port> - 3128

但是当我尝试推送或克隆我的仓库时,我会收到

fatal: unable to access '<repo githup link>' Received HTTP code 407 from proxy after CONNECT

我尝试输入的不仅是我的用户名,还包括域\用户名,如果代码语言表出现问题,请更改密码。而且我什至输入了错误的密码。错误保持不变。

当我输入“ 10.65.64.177.com”并尝试推送回购时,我收到:

fatal: unable to access '<repo github link>': Failed connect to github.com:3128; No error

只是不知道该尝试什么。


复制stackoverflow.com/questions/8561671吗?看到我关于https代理的答案
thinkOfaNumber

1
在AD环境中更新Windows密码后,我遇到了同样的问题。原来,我只需要重新启动代理服务器(cntlm)。
亚伦C

Answers:


84

对我有用的是类似于rohitmohta提出的东西; 在常规DOS命令提示符下(不在git bash上):

第一

git config --global http.proxy http://username:password@proxiURL:proxiPort

在某些情况下

git config --global https.proxy http://username:password@proxiURL:proxiPort

然后

git config --global http.sslVerify false

(我确认这是必要的:如果设置为true,则会收到“ SSL证书问题:无法获取本地发行者证书”错误)

就我而言,无需定义all_proxy变量

最后

git clone https://github.com/someUser/someRepo.git

1
我不需要“ git config --global http.sslVerify false”,但这可能取决于代理配置。
anre

1
该答案有效,应标记为正确。
Nadeem Iqbal

需要在git bash中完成它,而不是DOS。我发现DOS没什么!即。通过执行以下操作进行检查:git config --global -l
TheQuestionMan '18

因为一个人需要指定代理主机,而不是URL,所以答案git config --global http.proxy http://username:password@proxiURL:proxiPort与问题的答案git config --global http.proxy http://<username>:<userpsw>@<proxy>:<port>不那么正确,又有什么不同呢?
米歇尔·荣格

作品如魅力
Polycarp Kavoo

37

我不得不安装所有的4件事.gitconfig有:

git config --global http.sslVerify false
git config --global https.sslVerify false
git config --global http.proxy http://user:pass@yourproxy:port
git config --global https.proxy http://user:pass@yourproxy:port

只有这样克隆才成功。


我尝试了这里提到的所有选项,但仍然对我不起作用。:(
Xavier Geoffrey

为什么每个人都提议绕过SSL验证?这是不安全的,可能会损害您的系统!
flederwiesel19年

3
@flederwiesel因为公司代理是邪恶的,并且会引起各种愚蠢-例如必须将域凭据以明文形式存储在六个地方,以便您实际上可以访问代理资源。并强制使用由公司发行的不安全的根证书-或完全绕过/忽略SSL验证。很伤心
ggranum

36

也许您已经在使用系统代理设置-在这种情况下,未设置所有git代理都可以使用:

git config --global --unset http.proxy
git config --global --unset https.proxy

1
这至少使错误不会出现,并提示输入用户名/密码。有时git客户端默认情况下会不正确地设置代理。我在使用Atlassian的SourceTree时发生了相同的错误。
凯利·法国

经过大量的努力,这在Ubuntu 14.04上为我解决了这个问题!
蒂姆·埃比尼泽

2
这在使用SourceTree时也为我解决了,谢谢。
TomSW

尝试安装自制软件时出现此错误...这解决了我的问题。谢谢。
joeCarpenter

谢谢,这是从远程位置通过VPN隧道进行工作时唯一对我有用的方法。
马特

34

需要以下命令来强制git将凭据和身份验证方法发送到代理:

git config --global http.proxyAuthMethod 'basic'

来源:https : //git-scm.com/docs/git-config#git-config-httpproxyAuthMethod


2
这终于对我有用!在配置文件中设置代理后。
Dhanesh KM

3
这也是我所缺少的。谢谢。(通常,我不会对“我也是”的评论感到不满,但是这个答案已经很低了,需要更多的爱)。
ggranum

这正是所缺少的!
ivspenna

最终,这是我唯一需要的git config选项,因为我的https_proxy环境变量是在/ etc / environment中设置的。
Rakurai

这对我
有用

18

在公司防火墙的背后,我曾遇到过类似的问题。执行以下操作,并能够从运行Windows 7 SP1的系统中使用git shell克隆存储库。

  1. 为您的用户设置'all_proxy'环境变量。卷曲所需。

    export all_proxy=http://DOMAIN\proxyuser:proxypwd@proxy.server.com:8080
    
  2. 为您的用户设置“ https_proxy”环境变量。卷曲所需。

    export https_proxy=http://DOMAIN\proxyuser:proxypwd@proxy.server.com:8080
    
  3. 我不确定这是否有影响。但是我做到了,它奏效了:

    git config --global http.sslverify false
    
  4. 使用https://进行克隆

    git clone https://github.com/project/project.git
    

注意1:请勿使用http://。使用它会产生以下错误。可以使用https://来解决。

 error: RPC failed; result=56, HTTP code = 301

注意2:请避免在密码中使用@。可以使用$。


您可以使用带双引号的https_proxy = DOMAIN \“ proxyuser:proxypwd” @ proxy.server.com:8080,并输入一个@密码。
Vadorequest,2015年

1
我知道在"周围使用引号有一个技巧login:password。但我实际上尝试过,而git忽略了引号,因此@密码中的搞砸了。如果有人有解决方法,我认为值得一提。
Vadorequest

1
我已经尝试了上面建议的所有命令,但是在连接之后,我开始从代理获取“接收的HTTP代码407”。
user130934

1
您可以URL编码任何特殊字符。例如,@变为%40。meyerweb.com/eric/tools/dencoder
布莱恩特

6

在Windows环境中,我遇到了同样的问题。

我刚刚使用NTLM-APS(Windows NT身份验证代理服务器)解决了

配置您的NTML代理并将Git设置为它:

git config --global http.proxy http://<username>:<userpsw>@localhost:<port>

3

从Android Studio遇到407错误。尝试添加代理,但没有任何反应。发现它与公司证书有关,因此我从浏览器中导出了该证书并将其添加到Git。

从Web浏览器导出

Internet选项>内容>证书>导出(遵循向导,我选择了格式“ Base 64编码的X.509(.CER))

在Git Bash中

git config --global http.sslCAInfo c:\Utilities\Certificates\my_certificate

以下页面非常有用 https://blogs.msdn.microsoft.com/phkelley/2014/01/20/adding-a-corporate-or-self-signed-certificate-authority-to-git-exes-store/

像我使用的其他线程一样添加代理

git config --global http.proxy proxy.company.net:8080
git config --global https.proxy proxy.company.net:8080

1
我不会覆盖默认的密钥库"C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt",而是向其中添加贵公司的证书(可能在链接中所述的单独文件中)。
jansohn '16

3

我遇到了同样的问题,所以首先我检查了我的npm文件,并用以下命令检查了它:

npm config get proxy

我发现我设置了错误的代理,并且将我的愿望代理设置如下:

npm config set proxy http://xxx.xxx.xxx.4:8080   
npm config set https-proxy http://xxx.xxx.xxx.4:8080

之后,它对我有用


1
您是否确定命令:“ npm config ...”,因为我想它应该是“ git config ...”
Gaurav Lad


1

我的组织也遇到同样的问题。

经过多次尝试,我得出以下解决方案:

  1. 我向系统管理员申请将代理身份验证类型从Kerberos更改为NTLM。我不确定这是否是强制性的(在这个问题上我是个无聊的人),但是我的申请被批准了。

  2. 之后,我添加Git设置

    git config --global http.proxyauthmethod ntlm

只有在那之后,我才能克隆我的存储库


1

我也有同样的问题,并试图通过将http.proxyAuthMethod显式设置为basic来解决。

在服务器和代理之间运行pcap跟踪后,我注意到在git克隆期间发送到代理的“ HTTP CONNECT”请求仍然没有将“ Proxy-Authorization”标头设置为basic。这是由于我的git版本“ 1.8.3.1”不支持http.proxyAuthMethod。

安装最新的git版本(2.16.6)后,请在此处使用rpm软件包“ https://repo.ius.io/7/x86_64/packages/g/ ”,将http.proxyAuthMethod设置为basic最终会对git产生影响行为,然后我的git clone成功。

我希望这有帮助


0

我认为到了这一点,您应该集中精力:

fatal: unable to access '<repo githup link>' Received HTTP code 407 from proxy after CONNECT

这意味着您没有正确地使用代理进行身份验证。您可以仔细检查在此步骤中提供的密码是否正确?

git config --global http.proxy http://<username>:<userpsw>@<proxy>:<port>

0

我的Bitbucket存储库几天前就发生了此问题。我可以通过将远程URL设置为http而不是https来修复它。

我还尝试在命令行和git config中设置https代理,但这没有用。

$ git pull
fatal: unable to access 'https://username@bitbucket.org/sacgf/x.git/': Received HTTP code 407 from proxy after CONNECT

请注意,我们使用的是https:

$ git remote -v
origin  https://username@bitbucket.org/sacgf/x.git (fetch)
origin  https://username@bitbucket.org/sacgf/x.git (push)

将https网址替换为http网址:

$ git remote set-url origin http://username@bitbucket.org/sacgf/x.git
$ git pull
Username for 'https://bitbucket.org': username
Password for 'https://username@bitbucket.org': 
remote: Counting objects: 43, done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 43 (delta 31), reused 0 (delta 0)
Unpacking objects: 100% (43/43), done.
From http://bitbucket.org/sacgf/x
   a41eb87..ead1a92  master     -> origin/master
First, rewinding head to replay your work on top of it...
Fast-forwarded master to ead1a920caf60dd11e4d1a021157d3b9854a9374.
d

0

由于我的公司网络在内部使用一个代理,而从外部使用VPN时使用第二个(完全不同)代理,因此遇到了此错误。我最初是为本地代理配置的,收到错误,然后在其他地方工作时必须更新配置以使用备用,非本地代理。


0

我遇到了类似的问题,并通过以下步骤解决了问题:

**在git中添加代理详细信息**

git config --global http.sslVerify false
git config --global https.sslVerify false
git config --global http.proxy http://user:pass@yourproxy:port
git config --global https.proxy http://user:pass@yourproxy:port

0

此配置适用于我的设置:

[http]
    proxy = <your proxy>
[https] proxy = <your proxy>
[http]
    sslVerify = false
[https]
    sslVerify = false   
[credential]
    helper = wincred 

0

使用sourcetree时遇到相同的问题,原因可能是在打开sourcetree时将系统代理从打开切换为关闭。由于某种原因,这已写入项目的配置文件中。可以通过“设置”->“编辑配置文件”在源树上轻松删除它。只需将其删除到http下


0

使用Git Bash时遇到相同的问题。当我在命令提示符中执行相同的操作时,它可以完美运行。


0

供大家参考

这本来是解决以下错误的合适解决方案

Received HTTP code 407 from proxy after CONNECT

因此,以下命令应该是必需的

git config --global http.proxyAuthMethod 'basic'
git config --global https.proxy http://user:pass@proxyserver:port

这将生成以下配置

$ cat ~/.gitconfig
[http]
        proxy = http://user:pass@proxyserver:port
        proxyAuthMethod = basic

0

从密码中删除“ @”对我有用,无论如何永远不要在密码中保留@,这会给您Maven和进一步安装的问题

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.