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

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


更新2013年4月,git 1.8.3:

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

添加了一个新的只读凭证助手 (在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文件包含:

    [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 Credential Manager for Windows,以在Windows凭证管理器中保存Git密码,而不是使用netrc。 这是一种更安全的方式来存储密码


    这会让git通过https使用.netrc进行身份验证

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

    上一篇: How to use .netrc file on windows to save user and password

    下一篇: How to use git with gnome