Git – 如何在Windows上使用.netrc文件来保存用户和密码
当我使用Git克隆一个远程仓库与http和用户密码时,是否有可能在Windows上使用.netrc文件?
更新2013年4月,git 1.8.3 :
你现在可以使用一个加密的.netrc (与gpg)。
添加了一个新的只读凭证助手 (在
contrib/
)与.netrc/.authinfo
文件进行交互。
该脚本将允许您使用gpg加密的netrc文件 ,避免将凭据存储在纯文本文件中的问题。
解析之前,具有
.gpg
扩展名的文件将由GPG解密。
多个-f
参数是可以的。 它们按顺序处理,找到的第一个匹配条目通过凭证帮助程序协议返回。如果未指定
-f
选项,.authinfo.gpg
按照以下顺序使用主目录中的.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
时有没有办法跳过密码输入 ”
更新于2012年下半年,使用git 1.7.9+版本 : Mark Longair的 这个答案详细说明了凭证缓存机制 ,它允许您不以纯文本形式存储密码,如下所示。
(原文答案)
你必须定义:
- 环境变量
%HOME%
- 把一个
_netrc
文件放在%HOME%
如果您正在使用Windows 7
运行cmd类型:
setx HOME %USERPROFILE%
%HOME%将被设置为“ C:\Users\"username"
'
然后去它,并创建一个名为“ _netrc
”
注意:对于Windows,您需要一个“ _netrc
”文件,而不是“ .netrc
”。
它的内容是相当标准的(用你的值替换):
machine <hostname1> login <login1> password <password1> machine <hostname2> login <login2> password <password2>
卢克在评论中提到:
在Windows 7上使用最新版本的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协议,如本例所示(在页面中查找'netrc'):。 在这里也使用http协议:“ _netrc
/ .netrc
cURL
替代 ”。
在Windows上使用netrc支持的一个常见陷阱是,如果源https URL指定用户名,git将绕过使用它。
例如,如果你的.git/config
文件包含:
[远程“起源”] fetch = + refs / heads / *:refs / remotes / origin / * url = https://bob@code.google.com/p/my-project/
Git不会通过_netrc
来解析您的凭证,要解决这个问题,请删除您的用户名,如下所示:
[远程“起源”] fetch = + refs / heads / *:refs / remotes / origin / * url = https://code.google.com/p/my-project/
您还可以安装Git Credential Manager for Windows以在Windows凭据管理器中保存Git密码,而不是netrc。 这是一个更安全的方式来存储密码
这将让git在https上使用.netrc进行身份验证
- 该文件应该命名为
_netrc
并位于c:\Users\<username>
- 您将需要设置一个名为
HOME=%USERPROFILE%
环境变量(使用控制面板中的“系统”选项设置系统范围的环境变量。根据Windows的版本,您可能需要选择“高级选项”) - 存储在
_netrc
文件中的密码不能包含空格(引用密码将不起作用)
发布一个方法使用_netrc
从网站www.course.com.I下载材料希望对你有所帮助。
如果有人打算使用coursera-dl在www.coursera.com上下载公开课的资料。 而在WINDOWS操作系统上有人想要使用类似于Unix操作系统的“.netrc”这样的文件来添加选项-n而不是-U -P。为此他可以这样做:
-
检查Windows操作系统上的home路径:
setx HOME %USERPROFILE%
( 参考:VonC的答案 ),它将把HOME
保存为C:\Users\"username"
。 -
找到目录
C:\Users\"username"
并创建一个文件名_netrc
。 注意:没有任何后缀。 内容如下:machine coursera-dl login <user> password <pass>
-
使用命令如
coursera-dl -n --path PATH <course name>
来下载课程资料。 这个页面的更多课程选项的详细信息。