【问题标题】:Git .netrc file authentication issueGit .netrc 文件身份验证问题
【发布时间】:2015-10-15 01:09:03
【问题描述】:

我正在使用 GitHub。我创建了一个存储库并将其克隆到我的 Ubuntu 机器上。 我在.netrc 文件中做了如下输入:

machine https://github.com/xxx/yyy.git
login xxx
xxx

我希望 Git 不会在 .netrc 文件中的此条目之后询问我的用户名和密码。但即使在此之后,Git 也会提示输入凭据。

我错过了什么吗?

【问题讨论】:

  • 你为什么期望 git 有这样的事情?
  • git 默认会在每次推送或拉取请求时提示输入用户名和密码。为避免这种情况,您可以在 .netrc 文件中创建一个条目。 Link
  • AFAIK machine 应该只是主机名,没有任何协议或路径。所以在你的情况下只是github.com。没有比.netrc 可能的主机名更细粒度的登录定义了。

标签: git github .netrc


【解决方案1】:

~/.netrc(或 Windows 上的 %HOME%\_netrc)文件是不够的。

最好使用该文件加密,单独使用gpg + netrc,作为I did here

或者使用脚本管理加密。
在第二种情况下,您需要:

  • git-credential-netrc.perl 文件复制到$PATH/%PATH% 中的任意位置,

  • 添加:

      cd yourRepo
      git config credential.helper "netrc -d -v"
    

(您可以删除 -d-v 一旦它工作:这些是调试标志)

  • 在远程 URL 中使用您的登录信息:

      git set-url origin https://yourLogin@github.com/yourLogin/yourRepo
    

请参阅“Git - How to use .netrc file on Windows to save user and password”了解凭证“netrc”帮助程序 (Git 1.8.3+) 的一般原则。

【讨论】:

  • 我认为这是一个很好的解决方案,但我有一些安全问题。您将用户名和密码放在计算机上的一个文件中,该文件几乎可以被所有人读取。这里更好的选择是使用 SSH-Key 并将 SSH-Key 放在 SSH-Agen 中。
  • @ckruczek 我知道,我同意你的看法!我自己只使用 gpg2 encrypted _netrc 文件:见stackoverflow.com/a/18362082/6309。相同的凭证助手,但使用 gpg 加密。
  • 看起来git-credential-netrc.perl 本身将密码以纯文本形式记录到控制台...所以加密.netrc / _netrc 没有用,我猜。
  • @sschuberth 有趣!我看过 ar github.com/git/git/blob/master/contrib/credential/netrc/…,并没有在其中看到日志(密码)。但是这些天(2021 年,6 年后),无论如何我都会使用 GCM-core,而不是 netrc,加密与否:github.com/GitCredentialManager/git-credential-manager(最近更名为 GCM:github.com/GitCredentialManager/git-credential-manager/pull/542
  • 看起来用户和密码已被记录,因为我在git config credential.helper "netrc -d -v" 中使用了-v。我应该省略那个。
猜你喜欢
  • 2013-09-24
  • 2022-07-11
  • 2019-01-14
  • 2015-09-03
  • 1970-01-01
  • 1970-01-01
  • 2016-02-24
  • 1970-01-01
相关资源
最近更新 更多