web-dev-qa-db-ja.com

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

Gitを使用してHTTPとユーザーパスワードでリモートリポジトリを複製する場合、Windowsで.netrcファイルを使用できますか?

166
Bernd Klaus

Windowsで.netrcファイルを使用できますか?

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

  • 環境変数%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」ファイルが必要です。notファイルは「.netrc」ファイルではありません。

その内容は非常に標準的です(<examples>を実際の値に置き換えてください):

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

Luke コメント内の言及:

Windows 7でmsysgitの最新バージョンを使用すると、HOME環境変数を設定する必要がありませんでした。 _netrcファイルだけでうまくいきました。

これは確かに「 install」github、.ssh dir not there
git-cmd.bat msysgitに含まれていると、%HOME%環境変数が設定されます。

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

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

ただし、netrccurlで使用され、 この例 (ページで 'netrc'を探してください)に示すように、HTTPプロトコルで機能すると答えました。 HTTPプロトコルでも使用されます: " _netrc/.netrccURL "の代替。


Windowsでnetrcをサポートする場合の一般的なトラップは、Origin httpsのURLでユーザー名が指定されている場合、gitはそれを使用しないことです。

たとえば、.git/configファイルに次が含まれている場合:

 [remote "Origin"] 
 fetch = + refs/heads/*:refs/remotes/Origin /*
 url = https://[email protected] /p/my-project/

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

 [remote "Origin"] 
 fetch = + refs/heads/*:refs/remotes/Origin /*
 url = https://code.google.com/p /私のプロジェクト/

代替ソリューション:gitバージョン1.7.9 +(2012年1月): この回答 from Mark Longairクレデンシャルキャッシュメカニズムの詳細alsoを使用するとnot以下に示すように、パスワードをプレーンテキストで保存します。


Git 1.8. (2013年4月):

暗号化された.netrcgpgを使用)を使用できるようになりました。
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プログラムをカスタマイズできるようになりました。

commit 786ef5commit f07eeed (2018年5月12日)by Luis Marsano( ``) を参照してください。
C浜野順夫-gitster- in commit 017b7c5 、2018年5月30日)

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

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

192
VonC

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

34
KindDragon

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

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

_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's answer を参照)。 HOME環境変数をC:\Users\"username"として保存します。

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

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

1
BO.LI