web-dev-qa-db-ja.com

プロキシパスワードをディスクに保存せずに、HTTPプロキシの背後でWindowsでGitを使用する

基本認証を使用するHTTPプロキシの背後にある企業ネットワークで、WindowsでGitを使用しています。アウトバウンドSSHは機能しないため、プロキシ経由でHTTPSを使用する必要があります。

git config http.proxyを使用して設定をhttp://[username]:[password]@[proxy]:[port]として構成する方法を知っています。

ただし、特にこれは共有マシンであるため、パスワードを.gitconfigに保存したくないです。さらに、.gitconfigコマンドを使用してgit configを変更すると、パスワードがbash履歴に残ります。そのため、セッションの最後で.gitconfigをクリアすることを覚えていても、ほぼ確実に私の歴史もクリアすることを忘れてください。

パスワードなしでhttp.proxyを設定しようとしましたが、プッシュ/プルしようとするとパスワードを要求するプロンプトが表示されることを期待して無駄ですが、407プロキシ認証のみが必要です。オンラインで見つけたすべての情報は、.gitconfigにプレーンテキストでパスワードを保存することに関する問題を無視するか、NTLMプロキシを扱うかのいずれかです。

接続する必要があるたびにプロキシの詳細を入力することは非常にうれしいです-現時点で確認できる最善の解決策は、パスワードを要求し、git適切。これはまともな解決策ですか?また、スクリプト内の単一の呼び出しに環境変数を設定することはセキュリティに影響しますか?できれば、これに使用できる組み込みの設定や既存のツールはありますか?

30
ajd

Git設定を使用する代わりに、 this answer で説明されているように、環境変数(セッションのみに設定できる)を使用することもできます。

set http_proxy=http://username:password@proxydomain:port
set https_proxy=http://username:password@proxydomain:port
set no_proxy=localhost,.my.company 

したがって、ラッパースクリプトは、.gitconfigを変更する(プレーンテキストでパスワードを残す)代わりに、現在のセッションだけで環境変数をオンデマンドで設定できます。

25
VonC

git 2.8.0以降

git config --global http.proxy http://[user]@proxyhost:port
git config --global credential.helper wincred
29
0xA0

VonCの答えが常に問題を解決するとは限りません。理由はわかりませんが、プロキシサーバーに依存している可能性があります。

リポジトリの_git://_プロトコルを_http://_に置き換えると役立つ場合があります。

注:VonCの答えのように、最初にhttp(s)_proxy環境変数をセットアップする必要があります。

_set http_proxy=http://username:password@proxydomain:port
set https_proxy=http://username:password@proxydomain:port
_

たとえば、通常、marbleの安定版gitのクローンは次のようにクローン化されます( marble documentation から)。

git clone -b Applications/15.12 git://anongit.kde.org/marble〜/ marble/sources

Windowsのcmd(_http_proxy_が設定されていると仮定)では、代わりに_http[s]://_を使用する必要があります。

_git clone -b Applications/15.12 http://anongit.kde.org/marble ~/marble/sources
_
3
DomTomCat