Windows用のGitHubクライアントを機能させようとしています。企業のプロキシとファイアウォールの背後にある企業のWin 7 x64コンピューターを使用しています。他のさまざまな投稿に従い、環境変数と設定変数の複数の組み合わせを実験して、クローンとプッシュ更新を機能させる唯一の方法は、企業ドメインの完全なユーザーIDとパスワードを含むHTTPS_PROXY環境変数を使用することです。
これは、セキュリティの観点から受け入れられません。これを機能させる他の方法はありますか?
以下が働いた:
HTTPS_PROXY
という環境変数を値http://[domain]\[userid]:[password]@someproxy.mycorp.com:8080
で追加します以下はnot work:
HTTPS_PROXY
変数からユーザーIDとパスワードを省略していますHTTP_PROXY
(S
なし)という環境変数を使用するhttp.proxy
変数をグローバル構成ファイルに追加(.gitconfig
)https.proxy
変数をグローバル構成ファイルに追加するすべての場合において、GitHubclientはまだプロキシを認識しません:ファイルの内容TheLog.txt
alwaysは、起動時に次を表示します。
[time]|INFO|thread:4|GitHub.Helpers.StartupLogger|Proxy information: (None)
[time]|INFO|thread:4|GitHub.Helpers.StartupLogger|Couldn't fetch creds for proxy
そして、いくつかの失敗したプロキシ認証の試行の出力が続きます。これらはすべて、「資格情報がありません」を示しています。
これらのエントリをユーザーディレクトリの「.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>
上記のすべてを試してみました-成功しませんでした、私を助けたのは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を行うより)
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 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
私もこの問題に遭遇しましたが、少し掘り下げてみました(クライアントを分解しました)。
表示されているログメッセージを生成するコードは次のとおりです。
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でのセットアップのプロキシ情報のみを記録します。ログメッセージは、設定ファイルまたは環境変数で設定した内容には関係がないようです。
私はあなたのファイアウォールについて知りませんが、私のキャンパスはプロキシを使用します
git guiを使用していますか? EDIT:github client for windowsを使用していることに気付いた
私はtortoisegitを使用しており、プロキシを設定するのは非常に簡単です。どこでも右クリックして、tortoisegit> network、プロキシサーバーを有効にし、サーバーアドレス、ユーザー名、パスワードを設定します。やった
私が覚えている限りでは、tortoitgitはgithubですぐに動作します。
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つの異なるものが含まれていました。まず、Soggerの回答で説明されているように、.gitconfig
にある%USERPROFILE%
ファイルにエントリを追加する必要があります。
[http]
proxy = http://<proxy address>:<proxy port>
[https]
proxy = https://<proxy address>:<proxy port>
第二に、(これは私たちにとって欠落している部分でした)、プロキシサーバーで例外を設定してnon-authenticated*.github.com
へのプロキシトラフィック
問題はプロキシではなく、認証です。認証要件をバイパスすることで、GitHubデスクトップクライアントを使用してプロジェクトのクローンを作成して作業するために必要な通信が可能になります。
また、このアプローチでは、.gitconfig
ファイルにプロキシ認証情報を保存する必要はありませんでした。