sshを使わずに、httpsでGitHubからcloneやpushをする時に、社内だとproxyを通らないといけません。この時、gitの設定にプロキシ設定が入っていないとcan’t resolve proxyのエラーが出て、cloneやpushが出来ませんでした。 この時の解決方法です。
解決方法
.gitconfigにproxy設定する。
proxyサーバー確認
- netshでproxyサーバー名を確認
- 下の例では、プロキシサーバーのproxyから始まり8080までの部分が必要です
- netshの実行フォルダは何処でも構いません
PS C:\Users\<user_name> netsh winhttp show proxy 現在の WinHTTP プロキシ設定: プロキシ サーバー: proxy._ _ _.co.jp:8080 バイパス一覧 : *.gds._ _ _ _.com;*.jp._ _ _ _.com;*.eds._ _ _ _.com;*._ _ _ _.co.jp;
.gitconfigに設定
- git config –global でnetshで調べたproxyサーバー名を設定
- git config –global の実行フォルダは何処でも構いません
- git config –global で~/.gitconfigに書き込まれます
- –globalを付けずに git config だけの場合は、local_repository_folder/.git/configファイルに入ります
- proxy設定はhttpだけでhttpsの設定はありません
PS C:\Users\<user_name> git config --global http.proxy http://proxy._ _ _.co.jp:8080
- .gitconf内容の確認
PS C:\Users\<user_name> git config --global -l http.sslverify=true http.postbuffer=524288000 http.proxy=http://proxy._ _ _.co.jp:8080 core.compression=-1 user.name=account_name user.email=email_address
- これでgithubにhttpsでcloneやpushが出来るはずです。
- それでもcloneやpushが出来なければ、一度VScodeやShellを一度閉じて、再起動してもう一度試してみてください
- Windowsの環境変数HTTP, HTTPSにproxyを設定してもgitは読みこみませんでした。
- zscalerを使っている場合や、authentificationのエラーの場合はcertificateのパスを設定しなければなりません。 下を参考にしてみてください。
Zscalerの場合
3つの対応が必要です。
- Zscalerをproxyとして設定
- 証明書(certificate)
- 別途会社の物理proxyがあれば、Windows環境変数に物理proxyを設定
Zscale proxyとして設定
Zscalerは物理的なproxyサーバーでなく、在宅勤務時など物理proxyの外にあるPCでもソフト的なproxyとして動作するもののようです。 Zscalerとは何かとか、Zscalerを使っているか等は、『Windows npm Fetch Error Zscaler 使用時の解決方法』に書いてあるのでご参考ください。 私の場合、Zscalerを使っているにもかかわらずnetshすると、会社のproxyサーバーが表示されZscalerは表示されませんでした。
Zscalerのポート番号は、Zscalerのマニュアルでは80、443、9400か非推奨の9443の設定を示唆していました。 因みに私のZscalerのポート番号は調べる方法は分からなかったのですが、80で動作しました。
PS C:\Users\<user_name> git config --global http.proxy http://gateway.zscaler.net:80
Zscalerの証明書の貼り付け
Zscalerをproxyとして設定しても、authentication のエラーが出てきます。 そこで~/.gitconfigファイルのhttp.sslcainfo変数にZscalerの証明書のパスを設定します。
Zscalerの証明書が無い場合は、Zscalerの証明書の作り方を『pip, python [SSL: CERTIFICATE_VERIFY_FAILED』に書いてるので、ご参考ください。 Zscalerの証明書があれば、以下の様に設定します。
PS C:\Users\<user_name> git config --global http.sslcainfo C:\Users\<user_name>\venv\Lib\site-packages\certifi\cacert.pem
★上記のパスは私の場合で、Zscalerの証明書があるパスに置き替えてください。
Windows環境変数に物理Proxyサーバーの設定
上記のnetshで出てきたproxyを入れます。 git configではhttpsの設定は無かったですが、Windows環境変数にはHTTPとHTTPSに同じproxyサーバーのアドレスを設定します。
PS C:\Users\<user_name> $EVN:HTTP="http://proxy._ _ _.co.jp:8080" PS C:\Users\<user_name> $EVN:HTTPS="http://proxy._ _ _.co.jp:8080"
これで私の場合は、Zscalerでもgit cloneやgit pushが出来るようになりました。
各種configファイルの場所
Windowsの場合
- システム設定
C:/ProgramData/Git/config
- ユーザーglobal設定
~/.gitconfig
- ユーザーlocal設定
local_repository_folder/.git/config
Linux、Macの場合
- システム設定
/etc/gitconfig
- ユーザーglobal設定
~/.gitconfig
か~/.config/git/config
- ユーザーlocal設定
local_repository_directory/.git/config
コメント