プロキシの背後にあるGitHub Windowsクライアント


93

Windows用のGitHubクライアントを動作させようとしています。私は企業のプロキシとファイアウォールの背後にある企業のWin 7 x64コンピュータを使用しています。他のさまざまな投稿に従って、環境変数と構成変数の複数の組み合わせを試してみたところ、複製を取得して更新を機能させる唯一の方法は、完全な企業ドメインのユーザーIDとパスワードを含むHTTPS_PROXY環境変数を使用することです。

これはセキュリティの観点から受け入れられません。これを機能させる他の方法はありますか?

その他の注意事項:

以下はうまくいきました:

  • HTTPS_PROXY値で呼び出される環境変数を追加しますhttp://[domain]\[userid]:[password]@someproxy.mycorp.com:8080

以下は機能しませんでした

  • HTTPS_PROXY変数からユーザーIDとパスワードを省略
  • HTTP_PROXY(いいえS)と呼ばれる環境変数の使用
  • http.proxy変数をグローバル構成ファイルに追加する(.gitconfig
  • https.proxy変数をグローバル構成ファイルに追加する

すべての場合において、GitHub クライアントは依然としてプロキシを認識しません。ファイルの内容は、起動時にTheLog.txt 常に次のように表示されます。

[time]|INFO|thread:4|GitHub.Helpers.StartupLogger|Proxy information: (None)
[time]|INFO|thread:4|GitHub.Helpers.StartupLogger|Couldn't fetch creds for proxy

そして、いくつかの失敗したプロキシ認証試行の出力が続き、それらはすべて「資格情報が欠落している」ことを示しています。


2
環境変数を追加することでうまくいきましたが、環境変数にアクセスできるアプリケーションにドメイン/パスワードを公開してしまうため、これは受け入れられない解決策です。
Fabricio

jacobbenson.com/?p=302#sthash.DzPYdGUU.dpbsは、これはgui(windows set proxyを正しく使用する)がgitコマンドの背後でmsysgitを呼び出すことによって引き起こされると説明しています。msysgitは、Windowsプロキシ設定を使用しないhttpリクエストにlibcurlを使用します。github.com/libgit2/libgit2sharpのlibgit2sharpを含むいくつかの領域でこれを修正する作業が進行中です
Andrew Hill

回答:


131

これらのエントリをユーザーディレクトリの「.gitconfig」ファイルに追加します(%USERPROFILE%に移動します)。

[http]
    proxy = http://<proxy address>:<proxy port>

[https]
    proxy = https://<proxy address>:<proxy port>

パスワードをプレーンテキストで保存したくない場合は、CNTLMのようなローカルプロキシフォワーダーを使用します。これにより、すべてのトラフィックを転送し、パスワードをハッシュ化して保存できます。


元の質問とは異なり、パスワードがプレーンテキストであるかどうかを気にしない場合は、以下を追加します。

[http]
    proxy = http://<username>:<password>@<proxy address>:<proxy port>

[https]
    proxy = https://<username>:<password>@<proxy address>:<proxy port>

プロキシに対する承認が必要な場合は、edufinnの回答を参照してください。proxy= http:// <username>:<password> @ <corporate proxy>:<port>
Jan Hommes

1
@JanHommes元の質問は、パスワードをプレーンテキストで保存せずにそれを行う方法について具体的に尋ねていました
Sogger

@Soggerパスワードに「@」文字が含まれている場合、どうすればパスワードを構成できますか。
海岸線


4
CNTLMを使用している場合127.0.0.1localhost、推奨されるように、プロキシをの代わりに指定するようにしてください。Windowsでは、localhostが最初にIPv6アドレスを指しているように見えますが、CNTLMはこのアドレスをリッスンしません。そのため、gitはIPv4アドレスに切り替える前にタイムアウト(数分)まで待機します。
RonanPaixão15年

14

上記のすべてを試してみましたが、成功しませんでした。CNTLMだけが私を助けました-http : //cntlm.sourceforge.net/ 。

インストールしてcntlm -Hを実行し、corpプロキシに対して認証し、cntlmの出力でcntlm.iniファイルを編集し、Windowsサービスを再起動します。.gitconfigを次のように更新します。

[https] proxy = localhost:3128
[http] proxy = localhost:3128

これでcntlmがすべての認証を行い、Corpプロキシの背後でGitHub(およびDropbox、btw)を使用できるようになります。少なくとも次のパスワード変更まで:)(cntlm -Hをもう一度行うより)


2
git clone、fetch、pullなどのリモートアクションの完了に非常に長い時間がかかる場合は、.gitconfigを次のように切り替えてみてください:[https] proxy = 127.0.0.1:3128 [http] proxy = 127.0.0.1:3128
jhamm

どのWindowsサービスを再起動しますか?
ムクス

@Mukus cntlm-私が正しく覚えていれば、インストール後にサービスモードで実行されます。
アントン

変更を加えて再起動しましたが、まだ機能しません。
ムクス

8

GitHub Shellを企業のプロキシと連携させることができました。GitHub Shellを起動して、次のコマンドを実行します。

export http_proxy=http://<username>:<password>@<corporate proxy>:3128

私も本当にGUIを動作させたいです。しかし、私は企業の資格情報を含むWindowsグローバル環境変数を設定したくありません。

奇妙なことに、GitHub GUIクライアントはユーザー認証のためにGitHubに接続できますが、GitHubへのプロジェクトのクローン作成、プル、プッシュに関して問題があるだけです。問題はgit実装にあるようです。私の資格情報をgitグローバル設定に入れずにプロキシを介して実行するようにgitを構成でき、プルまたはプッシュ要求の実行中に資格情報を求めていました。しかし、それはGit Shellでのみ機能していました。


これは、おそらくGitHubがOSからプロキシ情報を取得するコンポーネントを使用して内部で認証するためです。SourceTreeにも同じ問題があります。また、gitが機能する場合、処理に非常に長い時間がかかり、SourceTreeの使用が不可能になることもわかりました。
RonanPaixão15年

これは、Githubが、IT担当者が見るための一般的なポートではないため、通常はフィルタリングされるgitポートを使用しようとしているためと考えられます。代替案については私の答えを参照してください。
dragon788

7

企業でGitHub for Windowsを使用している場合、大きな悪い企業ファイアウォール/プロキシの背後にいる可能性が高くなります。GitHub for Windowsには、オプションを設定するためのGUIのプロキシパラメータがまだありません。

企業のプロキシを使用するようにGitHub for Windowsを構成するには、通常C:\ Users \ .gitconfigまたはC:\ Documents&Settings \ .gitconfigにある.gitconfigファイルを編集します。

GitHub for Windowsを閉じます。.gitconfigに、追加するだけです

[https]プロキシ= proxy.yourcompany.com:port


4

私もこの問題に遭遇し、少し掘り下げてみました(クライアントを逆アセンブルしました)。

表示されているログメッセージを生成するコードは次のとおりです。

private static void LogProxyServerConfiguration()
{
    WebProxy defaultProxy = WebProxy.GetDefaultProxy();
    string str = defaultProxy.Address != (Uri)null ? defaultProxy.Address.ToString() : "(None)";
    StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Proxy information: {0}", str);
    try
    {
        if (defaultProxy.Credentials == null)
        {
            StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Couldn't fetch creds for proxy", new object[0]);
        }
        else
        {
            NetworkCredential credential = defaultProxy.Credentials.GetCredential(GitHubClient.GitHubDotComUri, "Basic");
            StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Proxy is authenticated: {0}", credential != null && !string.IsNullOrWhiteSpace(credential.UserName));
        }
    }
    catch (Exception ex)
    {
        StartupLogger.log.InfoException("Couldn't fetch creds for proxy", ex);
    }
}

したがって、このブロックはIEで設定されたプロキシ情報のみをログに記録します。ログメッセージは、設定ファイルまたは環境変数で設定した内容とは関係がないようです。


3

ファイアウォールについては知りませんが、キャンパスではプロキシを使用しています

git guiを使用しますか?編集:あなたはWindows用のgithubクライアントを使用していることに気づきました

私はTortoiseGitを使用しており、プロキシの設定は非常に簡単です。どこでも右クリック、tortoisegit> network、プロキシサーバーを有効にし、サーバーアドレス、ユーザー名、パスワードを設定します。できた

私が覚えている限り、tortoisegitはそのままgithubでも動作します。


2

ここにgithubでプロキシを設定する方法があります

git config --global http.proxy http://<username>:<pass>@<ip>:<port>
git config --global https.proxy http://<username>:<pass>@<ip>:<port>

ここ私の大学にはユーザー名とパスワードがないので、大学のIPが172.16.10.10でポートが8080の場合

git config --global http.proxy http://172.16.10.10:8080
git config --global https.proxy http://172.16.10.10:8080

PS -あなたはさらに学びますようなものが所定の位置に落ちるよう>私はセットプロキシにこの方法を使用することをお勧めします
ソース



1

私たちにとって、ソリューションには2つの異なるものが含まれていました。最初に、Soggerの回答で説明されているように.gitconfig、にあるファイルにエントリを追加する必要があります%USERPROFILE%

[http]
    proxy = http://<proxy address>:<proxy port>

[https]
    proxy = https://<proxy address>:<proxy port>

第二に、これは私たちにとって欠けていた部分です)、認証されていないプロキシトラフィックが許可されるようにプロキシサーバーで例外を構成する必要があります*.github.com

iPrismでは、次のようになります。 ここに画像の説明を入力してください

問題はプロキシではなく、認証です。認証要件をバイパスすることで、GitHubデスクトップクライアントを使用して、必要な通信でプロジェクトを複製し、作業することができます。

また、この方法ではプロキシ資格情報.gitconfigファイルに保存する必要なかったことにも注意してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.