GitHub https can’t resolve proxy 解決方法(Zscaler含む)

sshを使わずに、httpsでGitHubからcloneやpushをする時に、社内だとproxyを通らないといけません。この時、gitの設定にプロキシ設定が入っていないとcan’t resolve proxyのエラーが出て、cloneやpushが出来ませんでした。 この時の解決方法です。

解決方法

.gitconfigにproxy設定する。

proxyサーバー確認

  • netshでproxyサーバー名を確認
  • 下の例では、プロキシサーバーのproxyから始まり8080までの部分が必要です
  • netshの実行フォルダは何処でも構いません
Power Shell
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の設定はありません
Power Shell
PS C:\Users\<user_name> git config --global http.proxy http://proxy._ _ _.co.jp:8080
  • .gitconf内容の確認
Power Shell
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つの対応が必要です。 

  1. Zscalerをproxyとして設定
  2. 証明書(certificate)
  3. 別途会社の物理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で動作しました。

Power Shell
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の証明書があれば、以下の様に設定します。

Power Shell
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サーバーのアドレスを設定します。

Power Shell
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の場合

  1. システム設定    C:/ProgramData/Git/config
  2. ユーザーglobal設定 ~/.gitconfig 
  3. ユーザーlocal設定 local_repository_folder/.git/config 

Linux、Macの場合

  1. システム設定    /etc/gitconfig
  2. ユーザーglobal設定 ~/.gitconfig か ~/.config/git/config
  3. ユーザーlocal設定 local_repository_directory/.git/config 

コメント