私はかなり面倒な企業プロキシの背後にいます:
- 使用される実際のプロキシ アドレスは、スクリプトによって決定されます。
- 認証が必要です
- HTTPS を使用してWeb ページの証明書を置き換えます。
このシナリオで github リポジトリのクローンを作成するにはどうすればよいですか?
最初の問題は実際には 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
.
実際に git にプロキシを使用させるには、git config --global http.proxy http://<domain>\<username>:<password>@default-proxy:8080
.
これの明らかな欠点は、ドメイン パスワードがプレーン テキストとしてハード ディスクに保存されることです。
他の情報源はそうすべきだと主張していますが、他の設定はうまくいきませんでした。それらは次のとおりです。
https_proxy
またはhttp_proxy
http://<domain>\<username>:<password>@default-proxy:8080
git config --global https.proxy http://<domain>\<username>:<password>@default-proxy:8080
http_proxy
をhttp://<domain>\<username>:<password>@default-proxy:8080
3 番目の問題を回避するための最も簡単な方法は、環境変数を設定して証明書エラーを無視することです。プロキシによって返される証明書には何の価値もありません。
set GIT_SSL_NO_VERIFY=true
プレーンなパスワードを git config に保存しないようにするには、代わりにcntlmなどのローカル プロキシを使用できます。
代わりにパスワードハッシュを保存できます。ハッシュを取得するには、次のコマンドを使用します。
cntlm.exe -H -d <domain> -u <username>
その後、パスワードの入力を求められます。結果は 3 つのハッシュのリストになりPassNTLMv2
、このシナリオに関連する可能性が最も高いのはそのうちの 1 つです。Password
cntlm.ini の行を、パーツを含む出力の行に置き換えPassNTLMv2
ます。
明らかに、代わりにこのローカル プロキシを使用するように git を構成する必要があります。
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:/
プロトコルもプロキシを通過できるはずです。