web-dev-qa-db-ja.com

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

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

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

その他の注意事項:

以下が働いた:

  • HTTPS_PROXYという環境変数を値http://[domain]\[userid]:[password]@someproxy.mycorp.com:8080で追加します

以下はnot work:

  • HTTPS_PROXY変数からユーザーIDとパスワードを省略しています
  • HTTP_PROXYSなし)という環境変数を使用する
  • http.proxy変数をグローバル構成ファイルに追加(.gitconfig
  • https.proxy変数をグローバル構成ファイルに追加する

すべての場合において、GitHubclientはまだプロキシを認識しません:ファイルの内容TheLog.txtalwaysは、起動時に次を表示します。

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

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

90
Joshua Honig

これらのエントリをユーザーディレクトリの「.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>
128
Sogger

上記のすべてを試してみました-成功しませんでした、私を助けたのは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を行うより)

14
Anton

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

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

GUIも機能するようにしたいです。しかし、企業の資格情報を含むWindowsグローバル環境変数を設定したくありません。

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

8
edufinn

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

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

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

[https] proxy = proxy.yourcompany.com:port

7
Manivannan

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

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

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でのセットアップのプロキシ情報のみを記録します。ログメッセージは、設定ファイルまたは環境変数で設定した内容には関係がないようです。

4
DustinTheDev

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

git guiを使用していますか? EDIT:github client for windowsを使用していることに気付いた

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

私が覚えている限りでは、tortoitgitはgithubですぐに動作します。

3
bysreg

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

P.S->この方法を使用してプロキシを設定することをお勧めします
ソース

2
royatirek

このブログ が役立つことがわかりました。 ntlmaps プロキシについて説明します。おそらく安全性は低いですが、スムーズに機能しました。 cntlmが機能しませんでした。

1
Aksakal

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

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

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

第二に、(これは私たちにとって欠落している部分でした)、プロキシサーバーで例外を設定してnon-authenticated*.github.comへのプロキシトラフィック

IPrismでは、次のようになります。 enter image description here

問題はプロキシではなく、認証です。認証要件をバイパスすることで、GitHubデスクトップクライアントを使用してプロジェクトのクローンを作成して作業するために必要な通信が可能になります。

また、このアプローチでは、.gitconfigファイルにプロキシ認証情報を保存する必要はありませんでした。

1
AdamsTips