9

私はかなり面倒な企業プロキシの背後にいます:

  1. 使用される実際のプロキシ アドレスは、スクリプトによって決定されます。
  2. 認証が必要です
  3. HTTPS を使用してWeb ページの証明書を置き換えます。

このシナリオで github リポジトリのクローンを作成するにはどうすればよいですか?

4

3 に答える 3

12
  1. 最初の問題は実際には git とは関係ありません。実際にプロキシを構成できるようにするために必要な手順です。
    Windows コンピューターのプロキシ構成は、[コントロール パネル] -> [インターネット オプション] -> [接続] -> [LAN 設定] で確認できます。
    「自動構成スクリプトを使用する」がチェックされている場合は、最初に指定されたファイルをダウンロードして開く必要があります。小さなスクリプトを含むファイルを取得しました。それは次のように見えました:

    function FindProxyForURL(url, host)
    {
        var myip = myIpAddress();
        var hostip = dnsResolve(host);
        if (isInNet(hostip,"192.168.0.0","255.255.0.0"))
            return "DIRECT";
        if (isInNet(hostip,"xyz.abc.0.0","255.255.0.0"))
            return PROXY special-proxy:8080;
        return "PROXY default-proxy:8080";
    }
    

    したがって、私の場合、使用するプロキシはdefault-proxy:8080.

  2. 実際に git にプロキシを使用させるには、git config --global http.proxy http://<domain>\<username>:<password>@default-proxy:8080.

    これの明らかな欠点は、ドメイン パスワードがプレーン テキストとしてハード ディスクに保存されることです。

    他の情報源はそうすべきだと主張していますが、他の設定はうまくいきませんでした。それらは次のとおりです。

    1. 環境変数の設定https_proxyまたはhttp_proxyhttp://<domain>\<username>:<password>@default-proxy:8080
    2. グローバル git config をその値に設定します。git config --global https.proxy http://<domain>\<username>:<password>@default-proxy:8080
    3. 環境変数http_proxyhttp://<domain>\<username>:<password>@default-proxy:8080
  3. 3 番目の問題を回避するための最も簡単な方法は、環境変数を設定して証明書エラーを無視することです。プロキシによって返される証明書には何の価値もありません。

    set GIT_SSL_NO_VERIFY=true
    

プレーンなパスワードを git config に保存しないようにするには、代わりにcntlmなどのローカル プロキシを使用できます。

代わりにパスワードハッシュを保存できます。ハッシュを取得するには、次のコマンドを使用します。

cntlm.exe -H -d <domain> -u <username>

その後、パスワードの入力を求められます。結果は 3 つのハッシュのリストになりPassNTLMv2、このシナリオに関連する可能性が最も高いのはそのうちの 1 つです。Passwordcntlm.ini の行を、パーツを含む出力の行に置き換えPassNTLMv2ます。

明らかに、代わりにこのローカル プロキシを使用するように git を構成する必要があります。

于 2013-03-01T12:22:08.300 に答える
1

github への書き込みアクセスも必要な場合は、プロキシ経由で github への ssh アクセスを取得できる必要があります。これを行うには、 を使用できますcorkscrew

要するに、これを行う方法は次のとおりです。
最初にコルクスクリューを展開します。次に、以下を含む
ファイルを作成します。次を追加して、プロクシ経由で アクセスするためにコルクスクリューを使用するようにsshに指示します。~/.ssh/proxy_auth<proxy_username>:<proxy_password>
github.com~/.ssh/config

host github.com
    port 22
    proxycommand corkscrew <proxy_ip_address> <proxy_port> %h %p ~/.ssh/myauth

次に、ssh が によってプロキシを通過できるかどうかをテストしますssh -T git@github.com。これが機能する場合、git:/プロトコルもプロキシを通過できるはずです。

于 2013-03-01T13:18:48.353 に答える