Git:在 CONNECT 后从代理收到 HTTP 代码 503

Posted

技术标签:

【中文标题】Git:在 CONNECT 后从代理收到 HTTP 代码 503【英文标题】:Git: Received HTTP code 503 from proxy after CONNECT 【发布时间】:2015-10-13 20:20:40 【问题描述】:

我查看了很多与此问题相关的帖子,但似乎没有任何东西可以解决我的问题。所以现在我希望你们能给我一个神奇的答案。

我正在使用 Intellij(但也尝试使用 SourceTree)从 Fisheye 拉/推/克隆存储库。但是我收到错误:

git -c diff.mnemonicprefix=false -c core.quotepath=false fetch origin

fatal: unable to access 'https://myUser@myUrl/fisheye/git/myRepo.git/': Received HTTP code 503 from proxy after CONNECT

关于 503 的提示意味着由于维护而导致的临时停机对我不起作用,因为这个问题现在持续了一周。

关于错误/缺失代理设置的提示似乎也不起作用。我为系统 git 和 IDE (Intellij) 设置了 http 和 https 代理。

它以前工作过,我能够克隆存储库。然后我创建了一个新分支,进行了一些更改并希望将其推送回主分支。

我真的很期待一些聪明的提示。

谢谢

更新

我补充说:

export GIT_TRACE_PACKET=1 export GIT_TRACE=1 export GIT_CURL_VERBOSE=1

我收到了以下日志

$ git fetch
trace: built-in: git 'fetch'
trace: run_command: 'git-remote-https' 'origin' 'https://Username@myWebService.de/randomGit.git/'
* Couldn't find host myWebService in the _netrc file; using defaults
*   Trying 15.46.16.11...
* Connected to myProxy.com (15.46.16.11) port 8080 (#0)
* Establish HTTP proxy tunnel to myWebService.de:443
> CONNECT myWebService.de:443 HTTP/1.1
Host: webapp-entw.mlp.de:443
User-Agent: git/1.9.5.msysgit.1
Proxy-Connection: Keep-Alive
Pragma: no-cache

< HTTP/1.1 503 Service Unavailable
< Cache-Control: no-cache
< Pragma: no-cache
< Content-Type: text/html; charset=utf-8
< Proxy-Connection: close
< Connection: close
< Content-Length: 732
<
* Received HTTP code 503 from proxy after CONNECT
* Closing connection 0
fatal: unable to access 'https://Username@myWebService.de/randomGit.git/': Received HTTP code 503 from proxy after CONNECT

【问题讨论】:

你能显示git remote -v的输出吗? origin https://[myUser]@[myGit].git (fetch) origin https://[myUser]@[myGit].git (push) 【参考方案1】:

我遇到了同样的错误代码。对我来说,症状是我可以成功推送到远程仓库,但不能拉取……就我而言,这似乎是一个名称解析问题。

首先,我发现这些设置可以更清楚地了解网络事件。

export GIT_TRACE_PACKET=1
export GIT_TRACE=1
export GIT_CURL_VERBOSE=1

通过这些设置,我收到了这样的跟踪:

PROMPT$ git pull
...
15:21:17.015575 run-command.c:351       trace: run_command: 'git-remote-https' 'origin' 'https://gitub.com/USERNAME/REPO'
* Couldn't find host gitub.com in the .netrc file; using defaults
* Hostname was NOT found in DNS cache
*   Trying PROXY-SERVER-IP-ADDRESS...
* Connected to (PROXY-SERVER-IP-ADDRESS) port 80 (#0)
* Establish HTTP proxy tunnel to gitub.com:443
> CONNECT gitub.com:443 HTTP/1.1
Host: gitub.com:443
User-Agent: git/2.3.2 (Apple Git-55)
Proxy-Connection: Keep-Alive
Pragma: no-cache

< HTTP/1.1 503 Service Unavailable
< Cache-Control: no-cache
< Pragma: no-cache
< Content-Type: text/html; charset=utf-8
< Proxy-Connection: close
< Connection: close
< Content-Length: 787
< 
* Received HTTP code 503 from proxy after CONNECT
* Connection #0 to host PROXY-SERVER-IP-ADDRESS left intact
fatal: unable to access 'https://gitub.com/USERNAME/REPO/': Received HTTP code 503 from proxy after CONNECT

我对 github.com 和 www.github.com 做了一些 ping 操作,并注意到一些不同的结果。这促使我按如下方式更新我的原始 URL。

git remote set-url origin https://www.github.com/USERNAME/REPO

只需添加“www”。在这种情况下,进入原始 URL 解决了我的连接问题。不再有 503 —— push 和 pull 都成功了。

更新

根据您更新的跟踪,这看起来与我遇到的问题非常相似。您可能会尝试临时替换您正在使用的存储库服务器的实际 IP 地址(而不是主机名)。如果可行,请研究名称解析的解决方案,例如修改 /etc/hosts。另外,您能否确认您尝试过 git remote set-url origin 以包含完整的主机名而不仅仅是域名?

【讨论】:

所以我应该将origin https://[myUser]@[myGit].git 更改为origin https://www.[myUser]@[myGit].git (push) 所以我添加了export GIT_TRACE_PACKET=1【参考方案2】:

我发现我的代理无法识别 webapp 地址,所以我安装了 Privoxy 并告诉他传递所有请求,除了那些用于我的 git 的请求。它有效。

因此,如果我必须连接到存储库,我会跳过代理并直接连接。

【讨论】:

以上是关于Git:在 CONNECT 后从代理收到 HTTP 代码 503的主要内容,如果未能解决你的问题,请参考以下文章

IDEA提交失败,提示:OpenSSL SSL_connect: SSL_ERROR_SYSCALL

git 使用代理出现 LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443 错误

如何为 Git 设置代理

使用 HTTPS 代理的套接字上的 HTTPS 数据

[转发]解决 git push Failed to connect to 127.0.0.1 port 45463: 拒绝连接

C/S程序的一般流程和基本socket函数