Git-Windowsで.netrcファイルを使用してユーザーとパスワードを保存する方法


172

Gitを使用してHTTPとユーザー-パスワードでリモートリポジトリのクローンを作成しているときに、Windowsで.netrcファイルを使用することはできますか?

回答:


203

.netrcWindowsでファイルを使用することは可能ですか?

はい:する必要があります:

  • 環境変数を定義する%HOME%(Git 2.0より前、Git 2.0以降では不要)
  • _netrcファイルを入れる%HOME%

Windows 7/10を使用している場合は、CMDセッションで次のように入力します。

setx HOME %USERPROFILE%

とは%HOME%' C:\Users\"username"'に設定されます。
そのフォルダに移動し(cd %HOME%)、「_netrc」というファイルを作成します

注:ここでも、Windows用、あなたが「必要_netrc」ファイル、ではない.netrc」ファイルを。

その内容はかなり標準的です(<examples>あなたの値に置き換えてください):

machine <hostname1>
login <login1>
password <password1>
machine <hostname2>
login <login2>
password <password2>

ルークはコメントで言及しています:

Windows 7でmsysgitの最新バージョンを使用して、HOME環境変数を設定する必要はありませんでした。_netrcファイルだけでトリックをしました。

これは私が「に言及したものを実際にあるしようとしている『install』 githubの、.sshではないがDIR:」
git-cmd.bat設定んmsysgitに含まれて%HOME%環境変数を:

@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH%
@if not exist "%HOME%" @set HOME=%USERPROFILE%

者国者は、「httpプロトコルでは機能しないようだ」というコメントを信じています。

ただし、これnetrcはで使用されcurl次の例に示すようにHTTPプロトコルで機能することを確認しnetrcました(ページで「」を探します)。ここでもHTTPプロトコルで使用されます: " _netrc/の.netrc代わりにcURL "。


netrcWindows でのサポートの一般的なトラップは、オリジンのhttps urlがユーザー名を指定している場合、gitがそれを使用しないことです。

たとえば、.git/configファイルに次のものが含まれているとします。

[リモート「元」]
     フェッチ= + refs / heads / *:refs / remotes / origin / *
     url = https://bob@code.google.com/p/my-project/

Gitはを介して資格情報を解決しません。_netrcこれを修正するには、次のようにユーザー名を削除します。

[リモート「元」]
     フェッチ= + refs / heads / *:refs / remotes / origin / *
     url = https://code.google.com/p/my-project/

代替ソリューション:でgitのバージョン1.7.9+(2012年1月):この回答からマークLongairは詳細資格キャッシュ・メカニズム、あなたがすることができない、以下のようにプレーンテキストでパスワードを保存します。


Gitの1.8.3(2013年4月):

暗号化された.netrcを(でgpg)使用できるようになりました。
Windowsの場合:%HOME%/_netrc_ではなく、 " .「)

ファイルを操作するための新しい読み取り専用の資格情報ヘルパー(内contrib/.netrc/.authinfoが追加されました。

このスクリプトにより、gpgで暗号化されたnetrcファイル使用できるようになり、資格情報がプレーンテキストファイルに保存される問題が回避されます。

.gpg拡張子が付いたファイルは、解析前にGPGによって復号化されます。
複数の-f引数は問題ありません。それらは順番に処理され、最初に一致したエントリが資格情報ヘルパープロトコルを介して返されます。

何のときに-fオプションが指定されていない、.authinfo.gpg.netrc.gpg.authinfo、と.netrc自分のホームディレクトリ内のファイルは、この順序で使用されています。

この資格情報ヘルパーを有効にするには:

git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2'

(Gitはgit-credential-ヘルパー名の前に " "を付加し、パス内で検索することに注意してください。)

# and if you want lots of debugging info:
git config credential.helper '$shortname -f AUTHFILE -d'

#or to see the files opened and data found:
git config credential.helper '$shortname -f AUTHFILE -v'

完全な例については、「使用時にパスワード入力をスキップする方法はありますかhttps:// github」を参照してください。


Git 2.18+(2018年6月)では、暗号化された.netrcファイルの復号化に使用されるGPGプログラムをカスタマイズできるようになりました。

コミット786ef50コミットf07eeed(12 May 2018)、Luis Marsano ( ``)を参照してください。
(による合併Junio C浜野- gitster-017b7c5コミット、2018年5月30日)を

git-credential-netrcgpgオプションを受け入れる

git-credential-netrcgpggpg.programオプションに関係なく、' 'で復号化するようにハードコーディングされました。
これは、現代のGnuPGを「gpg2」のような別のものと呼ぶDebianのようなディストリビューションの問題です。


@Bernd:HOMEWindowsではデフォルトで定義されていないため、環境変数は重要です。この変数は、好きなディレクトリに設定できます(必須ではありませんC:\users\mylogin)。たとえば、職場では、Windowsアカウントに関連付けられているプラ​​イベートリモートディスクに設定します。これにより、失うことなくデスクトップを切り替えることができます。私.sshまたは_netrc設定。
VonC、

@Bernd:GitリポジトリがLANまたはWAN(インターネット)サーバー上にあるかどうかも確認してください。http.proxy環境変数でを定義する必要がある場合があります。または、逆に、サーバーをno_proxy変数に追加して、WAN経由でLANサーバーにアクセスしないようにします。
VonC、

環境変数の名前と値は何ですか?あなたはもう少し具体的なVonCになることができますか
デニスD

@DennisD:回答とコメントで私が話す2つの環境変数は、HOMEとhttp_proxyです。HOMEは任意のディレクトリを参照します。プロキシアドレスがある場合、http_proxyはプロキシアドレスを参照します。
VonC、2011年

msysgitWindows 7 の最新バージョンのを使用して、HOME環境変数を設定する必要はありませんでした。_netrcファイルだけでトリックをしました。
ルーク

35

Git Credential Manager for Windowsをインストールして、Gitパスワードをの代わりにWindows資格情報マネージャーに保存することもできます_netrc。これは、パスワードを保存するためのより安全な方法です。


8
すばらしい答えです。これは、SSHのがらくたをすべて処理する必要なく、ユーザー名/パスワードの単純さを(安全に)維持できる唯一の答えです。
カークウォル

@KirkWoll上記の私の更新の回答を参照してください.netrc。これで、暗号化されたファイルに資格情報を保存できます。セッション中に一度もこれらの資格情報を入力する必要はありません。
VonC 2013

11

これにより、GitはHTTPSで次を使用して認証できます.netrc

  • ファイルには名前を付け_netrc、に配置する必要がありますc:\Users\<username>
  • 呼び出される環境変数を設定する必要がありますHOME=%USERPROFILE%(コントロールパネルの[システム]オプションを使用してシステム全体の環境変数を設定します。Windowsのバージョンによっては、[詳細オプション]を選択する必要があります。)
  • _netrcファイルに保存されているパスワードにスペースを含めることはできません(パスワードの引用は機能しません)。

最もシンプルで最良のソリューション。Android Studio、Source Tree、Gitコマンドラインでチャームのように動作しました。Googleが推奨するCloud SDK credential.helperオプションが失敗し、手動で認証情報を生成してnet rcファイルで使用する必要があった場合、これを使用する必要がありました。私の場合は、オプション2と3を必要としませんでした
ハリ

1

_netrcサイトwww.course.comから資料をダウンロードする方法を投稿しています。

誰かがCoursera-dlを使用してwww.coursera.comでオープンクラスの資料をダウンロードし、Windows OSでは、UnixのようなOSにある「.netrc」のようなファイルを使用して、オプションの-n代わりにオプション-U <username> -P <password>。彼/彼女はこのようにそれを行うことができます:

  1. Windows OSのホームパスを確認しますsetx HOME %USERPROFILE%VonCの回答を参照)。HOME環境変数をとして保存しますC:\Users\"username"

  2. ディレクトリC:\Users\"username"に移動し、ファイル名を作成します_netrc注:接尾辞はありません。 内容は次のとおりです:machine coursera-dl login <user> password <pass>

  3. などのコマンドを使用してcoursera-dl -n --path PATH <course name>、クラスの資料をダウンロードします。このページのその他のコースラdlオプションの詳細。

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