コマンド「git clone https://github.com/user/project.git」は、https プロキシ経由で使用するとタイムアウトします。
以前にプロキシの背後で git を正常に機能させたことがあり、git とプロキシの使用に関連する他のスタックオーバーフローを読んだことがあります。現在、現在の組織のホストで非認証プロキシを使用するように構成しましたが、タイムアウトしています。
- プロキシはイカ、非認証です
- TCP-443 経由で直接接続することはオプションではありません
- gitがプロキシに接続していることを確認しました
- Git はコマンド「CONNECT github.com:443 HTTP/1.1」を発行します。
- プロキシはリクエストを許可し、ポート 443 で github.com に接続します
- libcurl は github の証明書を検証し、SSL 接続を確立します (SSL_RSA_WITH_RC4_128_SHA)
- git はそこに座って、決して起こらない何かを待っています。
- タイムアウト発生
誰もこれを経験したことがありますか?ヒントはありますか?
システムのバージョンは次のとおりです。
$ 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 -
それで、ここで何が起こっているのですか?誰にもアイデアはありますか?