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

fkaflof6  于 12个月前  发布在  Git
关注(0)|答案(5)|浏览(145)

当我使用Git克隆一个带有HTTP和用户密码的远程仓库时,是否可以在Windows上使用.netrc文件?

wrrgggsh

wrrgggsh1#

是否可以在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'文件,* 而不是 * 一个'.netrc'文件。
它的内容是相当标准的(用你的值替换<examples>):

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


Luke在评论中提到:
在Windows7上使用最新版本的msysgit,我不需要设置HOME环境变量,只需要_netrc文件就可以了。
这确实是我在“尝试“install“github,.ssh dir not there”中提到的:
msysgit中包含的git-cmd.bat会设置%HOME%环境变量:

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


爱国者在评论中认为,“看来它对http协议不起作用”
然而,我回答说netrc是由curl使用的,并且适用于HTTP协议,如this example所示(在页面中查找'netrc'):.这里也与HTTP协议一起使用:“_netrc / .netrc alternative to cURL“。
在Windows上使用netrc支持的一个常见陷阱是,如果源https url指定了用户名,git将绕过它。
例如,如果您的.git/config文件包含:

[remote "origin"]
     fetch = +refs/heads/*:refs/remotes/origin/*
     url = https:// [[email protected]](https://stackoverflow.com/cdn-cgi/l/email-protection) /p/my-project/


Git不会通过_netrc解析你的凭据,要解决这个问题,请删除你的用户名,如下所示:

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


替代解决方案:随着git版本1.7.9+(2012年1月):Mark Longair中的This answer详细介绍了credential cache mechanism,它 * 还 * 允许您 * 不 * 以纯文本存储密码,如下所示。
使用Git 1.8.3(2013年4月):
您现在可以使用encrypted .netrc(使用gpg)。
在Windows上:%HOME%/_netrc_,而不是'.')
添加了一个**new read-only credential helper(在contrib/中),用于与.netrc/.authinfo文件进行交互。
该脚本将允许您
使用gpg加密的netrc文件**,避免将凭据存储在纯文本文件中的问题。
扩展名为.gpg的文件将在解析之前由GPG解密。
多个-f参数是可以的。它们按顺序处理,找到的第一个匹配条目通过凭据帮助器协议返回。
如果未指定-f选项,则按此顺序使用主目录中的.authinfo.gpg.netrc.gpg.authinfo.netrc文件。
要启用此凭据帮助程序,请执行以下操作:

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


(Note Git会在helper名称前加上“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'

完整示例见“Is there a way to skip password typing when using https:// github

使用Git 2.18+(2018年6月),您现在可以自定义用于解密加密的.netrc文件的GPG程序。
参见commit 786ef50commit f07eeed(2018年5月12日)by Luis Marsano (``)
(由Junio C Hamano -- gitster --合并于commit 017b7c5,2018年5月30日)

git-credential-netrc:接受gpg选项

git-credential-netrc被硬编码为使用“gpg”解密,而不管gpg.program选项如何。
这是像Debian这样的发行版上的一个问题,它们将现代GnuPG称为其他东西,比如'gpg2'。

ttygqcqt

ttygqcqt2#

你也可以安装Git Credential Manager for Windows来保存Git密码到Windows凭证管理器中,而不是_netrc。这是一种更安全的存储密码的方式。

iecba09b

iecba09b3#

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

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

whitzsjs4#

我正在发布一种使用_netrc从网站www.course.com下载材料的方法。
如果有人要使用coursera-dl下载www.coursera.com上的开放课程材料,并且在Windows操作系统上,有人想使用类似Unix操作系统中的“.netrc”文件来添加选项-n而不是-U <username> -P <password>。他/她可以这样做:
1.检查Windows操作系统上的home路径:setx HOME %USERPROFILE%(参考VonC的答案)。它将保存HOME环境变量为C:\Users\"username"
1.在目录C:\Users\"username"中找到并创建一个文件名_netrc。**注意:没有任何后缀。**内容如下:machine coursera-dl login <user> password <pass>
1.使用像coursera-dl -n --path PATH <course name>这样的命令下载课程资料。更多关于this page的coursera-dl选项细节。

yjghlzjz

yjghlzjz5#

在我的操作系统WINDOWS中,我使用没有下划线的.netrc文件(就像在Linux中一样)。并且工作没有问题。
我用记事本创建了这个档案。
在档案中,我只放了一行:
机器<the_link_that_you_want>登录<your_login>密码<your_password>
例如:
机器www.gmail.com登录maria密码123456
为了保存文件,我输入了文件名:.netrc(否则,只有扩展名,根本没有名称)和文件类型:所有文件
我将存档保存在我的个人目录中(如C:/users/maria)
该目录必须与.vscode、.conda、.python等文件夹所在的目录相同。
之后,程序开始在站点中进行身份验证,没有问题。

相关问题