2013-05-07 84 views
6

通過https代理使用命令「git clone https://github.com/user/project.git」超時。當通過https代理使用時,git克隆超時

我已經成功讓git在代理之前運行,並閱讀了其他與git和代理使用有關的stackoverflow。現在,我已經在當前組織的主機上配置它,以使用非認證代理,但它已超時。

  • 代理是魷魚,非認證
  • 通過TCP-443直接連接是不是一種選擇
  • 我已經證實了Git是聯繫代理
  • 的Git發出命令「CONNECT github上.COM:443 HTTP/1.1"
  • 代理允許該請求,並連接到github.com端口443
  • libcurl的驗證GitHub的證書和建立SSL連接(SSL_RSA_WITH_RC4_128_SHA)
  • 混帳繼續坐在那裏,等待着一些從未發生發生
  • 超時

有沒有人經歷過這個?有任何提示?

這裏的系統版本:

$ cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 6.4 (Santiago) 

這裏的Git版本和更新信息(RH最新提供)

$ git --version 
git version 1.7.11.3 

$ sudo yum check-update git  
Loaded plugins: downloadonly, rhnplugin, security 
This system is receiving updates from RHN Classic or RHN Satellite. 

下面是相關的環境變量:

$ export | grep http 
declare -x http_proxy="http://proxy.hostname:3128/" 
declare -x https_proxy="http://proxy.hostname:3128/" 

這裏的我的.gitconfig(用於冗餘):

$ cat ~/.gitconfig 
[http] 
     proxy = http://proxy.hostname:3128/ 
[https] 
     proxy = http://proxy.hostname:3128/ 

下面是運行(並最終超時)的git的例子:

$ GIT_CURL_VERBOSE=1 GIT_DEBUG_LOOKUP=1 GIT_TRANSLOOP_DEBUG=1 GIT_TRANSPORT_HELPER_DEBUG=1 git clone https://github.com/user/project.git 2>&1 
Cloning into 'project'... 
Debug: Remote helper: -> capabilities 
Debug: Remote helper: Waiting... 
Debug: Remote helper: <- fetch 
Debug: Got cap fetch 
Debug: Remote helper: Waiting... 
Debug: Remote helper: <- option 
Debug: Got cap option 
Debug: Remote helper: Waiting... 
Debug: Remote helper: <- push 
Debug: Got cap push 
Debug: Remote helper: Waiting... 
Debug: Remote helper: <- 
Debug: Capabilities complete. 
Debug: Remote helper: Waiting... 
* Couldn't find host github.com in the .netrc file; using defaults 
* About to connect() to proxy proxy.hostname 3128 (#0) 
* Trying 10.22.74.73... * Connected to proxy.hostname (x.x.x.x) port 3128 (#0) 
* Establish HTTP proxy tunnel to github.com:443 
> CONNECT github.com:443 HTTP/1.1 
Host: github.com:443 
User-Agent: git/1.7.11.3 
Proxy-Connection: Keep-Alive 
Pragma: no-cache 

< HTTP/1.0 200 Connection established 
< 
* Proxy replied OK to CONNECT request 
* Initializing NSS with certpath: sql:/etc/pki/nssdb 
* CAfile: /etc/pki/tls/certs/ca-bundle.crt 
    CApath: none 
* SSL connection using SSL_RSA_WITH_RC4_128_SHA 
* Server certificate: 
* subject: CN=github.com,O="GitHub, Inc.",L=San Francisco,ST=California,C=US,serialNumber=C3268102,incorporationState=California,incorporationCountry=US,businessCategory=Private Organization 
* start date: May 27 00:00:00 2011 GMT 
* expire date: Jul 29 12:00:00 2013 GMT 
* common name: github.com 
* issuer: CN=DigiCert High Assurance EV CA-1,OU=www.digicert.com,O=DigiCert Inc,C=US 
* Connected to proxy.hostname (x.x.x.x) port 3128 (#0) 

這裏的魷魚日誌:

1367957877.701 60148 x.x.x.x TCP_MISS/200 3765 CONNECT github.com:443 - DIRECT/204.232.175.90 - 

那麼,這是怎麼回事呢?有沒有人有任何想法?

+0

你可以粘貼'ssh -vT git @ github.com'的輸出嗎? – 2013-05-14 05:34:15

+0

您也可以在這裏查看來自@AmirHD的真棒帖子:http://stackoverflow.com/a/21820716/1049572 – Neonigma 2015-12-09 14:40:13

回答

4

我從RPMForge的額外存儲庫使用Git版本1.7.11.3相同問題的CentOS

降級到舊版本下(我用1.7.3.4測試)解決了這個問題。

要降級,你可以做這樣的事情

yum --showduplicates list git 

這將顯示包的git

卸載以前安裝的Git版本的所有可用的版本:

yum remove git 

安裝舊版本:

yum install git-1.7.3.4 
+0

謝謝,您的策略在RHEL6中爲我工作,但我刪除了rpm並從源代碼安裝了更新的版本。我遵循RHEL6源代碼安裝說明: https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Developer_Guide/collaboration.git.html – chrishiestand 2013-09-10 10:38:06

+0

這也適用於我。但顯然我希望有更好的解決方案。我嘗試更新SSL證書並指向git使用它們,但仍然無法使用。 – xcorat 2013-10-04 19:01:43

+1

@xcorat如上面註釋中所建議的,嘗試從源代碼編譯。 – Bogdan 2013-10-07 10:17:53