是否可以使用。当我使用 Git 用 HTTP 和用户密码克隆一个远程存储库时,在 Windows 上使用 netrc 文件?
可以在 Windows 上使用 .netrc文件吗?
.netrc
是的,你必须:
%HOME%
_netrc
如果你使用的是 Windows7/10,在 CMD会话中,输入:
CMD
setx HOME %USERPROFILE%
而 %HOME%将被设置为‘ C:\Users\"username"’。 去那个文件夹(cd %HOME%)并创建一个名为“ _netrc”的文件
C:\Users\"username"
cd %HOME%
注意: 同样,对于 Windows,您需要一个“ _netrc”文件,没有需要一个“ .netrc”文件。
它的内容相当标准(用您的值替换 <examples>) :
<examples>
machine <hostname1> login <login1> password <password1> machine <hostname2> login <login2> password <password2>
卢克在评论中提到:
在 Windows 7上使用最新版本的 msysgit,我不需要设置 HOME环境变量。单独使用 _netrc文件就可以解决这个问题。
HOME
这正是我在《 尝试“ ABC0”github,.ssh不存在》中提到的: 包含在 msysgit 中的 git-cmd.bat确实设置了 %HOME%环境变量:
.ssh
git-cmd.bat
@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH% @if not exist "%HOME%" @set HOME=%USERPROFILE%
爱国者相信在评论中,“它似乎不会为 http 协议工作”
然而,我回答说,netrc是由 curl使用的,并且适用于 HTTP 协议,如 这个例子所示(在页面中查找‘ netrc’) : 。这里也与 HTTP 协议一起使用: “ ABC3/ABC4替代 cURL”。
netrc
curl
cURL
Windows 上支持 netrc的一个常见陷阱是,如果原始 https URL 指定用户名,git 将绕过使用它。
例如,如果 .git/config文件包含:
.git/config
[remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/* url = https://bob@code.google.com/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详细的 凭据缓存机制 ,还有允许你存储你的密码在明文如下所示。
与 Git 1.8合作(2013年4月) :
您现在可以使用 加密了 Netrc(与 gpg一起)。 在 Windows 上: %HOME%/_netrc(_,而不是‘ .’)
gpg
%HOME%/_netrc
_
.
一个 新的只读凭证助手(在 contrib/中)与 .netrc/.authinfo文件交互已经被添加。
contrib/
.netrc/.authinfo
该脚本将允许您使用 使用 gpg 加密的 netrc 文件,从而避免将凭据存储在纯文本文件中的问题。
带有 .gpg扩展名的文件在解析之前将由 GPG 解密。 多个 -f参数没有问题。它们按顺序处理,找到的第一个匹配条目通过凭据助手协议返回。 如果没有给出 -f选项,则按照以下顺序使用主目录中的 .authinfo.gpg、 .netrc.gpg、 .authinfo和 .netrc文件。
带有 .gpg扩展名的文件在解析之前将由 GPG 解密。 多个 -f参数没有问题。它们按顺序处理,找到的第一个匹配条目通过凭据助手协议返回。
.gpg
-f
如果没有给出 -f选项,则按照以下顺序使用主目录中的 .authinfo.gpg、 .netrc.gpg、 .authinfo和 .netrc文件。
.authinfo.gpg
.netrc.gpg
.authinfo
启用此凭据帮助程序:
git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2'
(注意,Git 将在 helper 名称前面加上“ git-credential-”,并在路径中查找它。)
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时是否有办法跳过输入密码”的完整示例
https:// github
使用 Git 2.18 + (2018年6月) ,您现在可以定制用于解密加密的 .netrc文件的 GPG 程序。
见 承诺786f50,承认吧(2018年5月12日) by Luis Marsano (“)。 (由 朱尼奥 · C · 哈马诺 gitster于2018年5月30日在 承诺017b7c5合并)
gitster
接受 gpg选项 无论如何,git-credential-netrc都被硬编码为用“ gpg”解密 程序选项。 对于 Debian 这样的发行版来说,这是一个问题,因为它们把现代 GnuPG 称为其他的东西,比如‘ gpg2’
无论如何,git-credential-netrc都被硬编码为用“ gpg”解密 程序选项。 对于 Debian 这样的发行版来说,这是一个问题,因为它们把现代 GnuPG 称为其他的东西,比如‘ gpg2’
git-credential-netrc
gpg2
您还可以安装 用于 Windows 的 Git 凭据管理器,将 Git 密码保存在 Windows 凭据管理器而不是 _netrc中。这是一种更安全的存储密码的方法。
这将允许 Git 使用 .netrc在 HTTPS 上进行身份验证:
c:\Users\<username>
HOME=%USERPROFILE%
我张贴了一个方法使用 _netrc下载资料的网站 www.course.com。
如果有人打算使用 coursera-dl 下载 www.coursera.com 上的开放课程资料,而在 Windows 操作系统上,有人希望使用类似“。Netrc”,这是在类似 Unix 操作系统中添加选项 -n而不是 -U <username> -P <password>方便。他/她可以这样做:
-n
-U <username> -P <password>
检查 Windows 操作系统的主路径: setx HOME %USERPROFILE%(请参阅 VonC 的回答) ,它会将 abc1的环境变量保存为 C:\Users\"username"。
定位到目录 C:\Users\"username"并创建一个文件名 _netrc。 < strong > 注意: 没有任何后缀。 内容如下: machine coursera-dl login <user> password <pass>
machine coursera-dl login <user> password <pass>
使用像 coursera-dl -n --path PATH <course name>这样的命令下载课程资料。
coursera-dl -n --path PATH <course name>