Git - 如何在 Windows 上使用 .netrc 文件保存用户和密码

发布于 2024-11-07 10:24:44 字数 66 浏览 0 评论 0 原文

当我使用 Git 通过 HTTP 和用户密码克隆远程存储库时,是否可以在 Windows 上使用 .netrc 文件?

Is it possible to use a .netrc file on Windows when I'm using Git to clone a remote repository with HTTP and user - password?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

荒路情人 2024-11-14 10:24:44

是否可以在 Windows 上使用 .netrc 文件?

是:您必须:

  • 定义环境变量 %HOME% (Git 2.0 之前的版本,Git 2.0+ 不再需要)
  • _netrc 文件放入 %HOME%

如果您使用的是 Windows 7/10,请在 CMD 会话中键入:

setx HOME %USERPROFILE%

%HOME% 将设置为'C:\Users\"用户名"'。
转到该文件夹​​ (cd %HOME%) 并创建一个名为“_netrc”的文件

注意:同样,对于 Windows,您需要一个“_netrc” >' 文件,不是 '.netrc' 文件。

它的内容非常标准(将 替换为您的值):

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

Luke 提到在评论中:

在 Windows 7 上使用最新版本的 msysgit,我不需要设置 HOME 环境变量。仅 _netrc 文件就达到了目的。

这确实是我在“尝试“< code>install”github,.ssh 目录不存在”:
包含 git-cmd.bat在msysgit中确实设置了%HOME%环境变量:

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

爱国者相信评论中的“它似乎不适用于http协议”

但是,我回答说netrccurl 使用,并且适用于 HTTP 协议,如 此示例(在页面中查找“netrc”): .此处也与 HTTP 协议一起使用:“_netrc/.netrc 替代cURL”。


Windows 上支持 netrc 的一个常见陷阱是,如果原始 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/my-project/

替代解决方案:使用 < strong>git 版本 1.7.9+(2012 年 1 月):此答案来自 Mark Longair 详细介绍了 凭据缓存机制允许您以纯文本形式存储密码,如下所示。


使用 Git 1.8.3 (2013 年 4 月):

您现在可以使用加密的 .netrc(带有 gpg)。
在 Windows 上:%HOME%/_netrc_,而不是“.”)

A 新的只读添加了与 .netrc/.authinfo 文件交互的凭据帮助程序(在 contrib/ 中)。

该脚本将允许您使用 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+(6 月2018),您现在可以自定义用于解密加密 .netrc 文件的 GPG 程序。

请参阅提交786ef50提交 f07eeed(2018 年 5 月 12 日),作者:路易斯·马尔萨诺 (``)
(由 Junio C Hamano -- gitster -- 合并于 提交017b7c5,2018 年 5 月 30 日)

git-credential-netrc:接受gpg选项

git-credential-netrc 被硬编码为使用“gpg”解密,无论
gpg.program 选项。
这是 Debian 等发行版上的一个问题,这些发行版将现代 GnuPG 称为其他名称,例如“gpg2

Is it possible to use a .netrc file on Windows?

Yes: You must:

  • define environment variable %HOME% (pre-Git 2.0, no longer needed with Git 2.0+)
  • put a _netrc file in %HOME%

If you are using Windows 7/10, in a CMD session, type:

setx HOME %USERPROFILE%

and the %HOME% will be set to 'C:\Users\"username"'.
Go that that folder (cd %HOME%) and make a file called '_netrc'

Note: Again, for Windows, you need a '_netrc' file, not a '.netrc' file.

Its content is quite standard (Replace the <examples> with your values):

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

Luke mentions in the comments:

Using the latest version of msysgit on Windows 7, I did not need to set the HOME environment variable. The _netrc file alone did the trick.

This is indeed what I mentioned in "Trying to “install” github, .ssh dir not there":
git-cmd.bat included in msysgit does set the %HOME% environment variable:

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

爱国者 believes in the comments that "it seems that it won't work for http protocol"

However, I answered that netrc is used by curl, and works for HTTP protocol, as shown in this example (look for 'netrc' in the page): . Also used with HTTP protocol here: "_netrc/.netrc alternative to cURL".


A common trap with with netrc support on Windows is that git will bypass using it if an origin https url specifies a user name.

For example, if your .git/config file contains:

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

Git will not resolve your credentials via _netrc, to fix this remove your username, like so:

[remote "origin"]
     fetch = +refs/heads/*:refs/remotes/origin/*
     url = https://code.google.com/p/my-project/

Alternative solution: With git version 1.7.9+ (January 2012): This answer from Mark Longair details the credential cache mechanism which also allows you to not store your password in plain text as shown below.


With Git 1.8.3 (April 2013):

You now can use an encrypted .netrc (with gpg).
On Windows: %HOME%/_netrc (_, not '.')

A new read-only credential helper (in contrib/) to interact with the .netrc/.authinfo files has been added.

That script would allow you to use gpg-encrypted netrc files, avoiding the issue of having your credentials stored in a plain text file.

Files with the .gpg extension will be decrypted by GPG before parsing.
Multiple -f arguments are OK. They are processed in order, and the first matching entry found is returned via the credential helper protocol.

When no -f option is given, .authinfo.gpg, .netrc.gpg, .authinfo, and .netrc files in your home directory are used in this order.

To enable this credential helper:

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

(Note that Git will prepend "git-credential-" to the helper name and look for it in the path.)

# 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'

See a full example at "Is there a way to skip password typing when using https:// github"


With Git 2.18+ (June 2018), you now can customize the GPG program used to decrypt the encrypted .netrc file.

See commit 786ef50, commit f07eeed (12 May 2018) by Luis Marsano (``).
(Merged by Junio C Hamano -- gitster -- in commit 017b7c5, 30 May 2018)

git-credential-netrc: accept gpg option

git-credential-netrc was hardcoded to decrypt with 'gpg' regardless of
the gpg.program option.
This is a problem on distributions like Debian that call modern GnuPG something else, like 'gpg2'

烟火散人牵绊 2024-11-14 10:24:44

You can also install Git Credential Manager to save Git passwords in Windows credentials manager instead of _netrc. This is a more secure way to store passwords.

秉烛思 2024-11-14 10:24:44

这将使 Git 使用 .netrc 在 HTTPS 上进行身份验证:

  • 该文件应命名为 _netrc 并位于 c:\Users\
  • 您需要设置一个名为 HOME=%USERPROFILE% 的环境变量(使用控制面板中的“系统”选项设置系统范围的环境变量。根据 Windows 版本,您可能需要选择“高级选项”。)。
  • 存储在 _netrc 文件中的密码不能包含空格(引用密码不起作用)。

This will let Git authenticate on HTTPS using .netrc:

  • The file should be named _netrc and located in c:\Users\<username>.
  • You will need to set an environment variable called HOME=%USERPROFILE% (set system-wide environment variables using the System option in the control panel. Depending on the version of Windows, you may need to select "Advanced Options".).
  • The password stored in the _netrc file cannot contain spaces (quoting the password will not work).
假装爱人 2024-11-14 10:24:44

我正在发布一种使用 _netrc 从网站 www.course.com 下载材料的方法。

如果有人要使用 coursera-dl 在 www.coursera.com 上下载公开课材料,并且在 Windows 操作系统上有人想要使用类似 Unix 操作系统中的“.netrc”之类的文件来添加选项 -n 而不是 -U <用户名> -P <密码> 为了方便起见。他/她可以这样做:

  1. 检查 Windows 操作系统上的主路径:setx HOME %USERPROFILE%(请参阅VonC 的回答)。它将把 HOME 环境变量保存为 C:\Users\"username"

  2. 找到目录 C:\Users\"username" 并创建一个文件名 _netrc注意:没有任何后缀。
    内容如下:machine coursera-dl login ;密码

  3. 使用 coursera-dl -n --path PATH <课程名称> 等命令下载课程资料。 此页面的更多 coursera-dl 选项详细信息。

I am posting a way to use _netrc to download materials from the site www.course.com.

If someone is going to use the coursera-dl to download the open-class materials on www.coursera.com, and on the Windows OS someone wants to use a file like ".netrc" which is in like-Unix OS to add the option -n instead of -U <username> -P <password> for convenience. He/she can do it like this:

  1. Check the home path on Windows OS: setx HOME %USERPROFILE%(refer to VonC's answer). It will save the HOME environment variable as C:\Users\"username".

  2. Locate into the directory C:\Users\"username" and create a file name _netrc.NOTE: there is NOT any suffix.
    the content is like: machine coursera-dl login <user> password <pass>

  3. Use a command like coursera-dl -n --path PATH <course name> to download the class materials. More coursera-dl options details for this page.

亽野灬性zι浪 2024-11-14 10:24:44

在我的操作系统 WINDOWS 中,我使用不带下划线的 .netrc 文件(就像在 LINUX 中一样)。并且工作没有问题。

为了创建存档,我使用了记事本。

在存档内,我只放置了一行:

machine 登录 密码 <您的密码>

如下例所示:

machine www.gmail.com 登录 maria 密码 123456

要保存文件,我将其放入文件名:.netrc(否则,只有扩展名,根本没有名称),并且在我标记的文件类型中:

我将存档保存在我的个人目录中的所有文件(例如 C:/users/maria)

该目录必须是与您拥有以下文件夹的目录相同:.vscode、.conda、.python ....

之后,程序开始在站点中进行身份验证,没有问题。

In my OS WINDOWS, I use the .netrc file without the underline (LIKE IN LINUX). And works without problem.

To create the archive I used notepad.

Inside the archive I put only the line:

machine <the_link_that_you_want> login <your_login> password <your_password>

like the example below:

machine www.gmail.com login maria password 123456

To save the file, I put in the name of the file : .netrc (otherwise, only the extension, without name at all) and in the type of file I mark: all files

I saved the archive in me personal directory (like C:/users/maria)

The directory must be the same directory that you have folders like: .vscode, .conda, .python ....

after that, the program start to authenticate in the site without problems.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文