Git http – 安全地记住凭据

当通过HTTP(S)连接到远程存储库时,有没有办法让git记住我的凭证?

我已经尝试了在git-config详细描述的core.askpass方法来让外部脚本提供我的凭据。 虽然它的效果很好,但用户名和密码仍然以纯文本的forms存储在小shell脚本中。

git在通过HTTP运行时调用cURL。 您可以通过在用户的主目录中设置一个.netrc文件来存储安全凭证,并将其设置为私有(Linux中的0600)。

该文件的内容提供每个远程域的用户名和密码。

 machine myRemoteServer login myUserName password s3cret 

有关完整的服务器端configuration,请参阅https://stackoverflow.com/questions/3947530/git-push-fatal-failed/7177690#7177690 ,该服务器端configuration可轻松包含对您的ldap服务器的调用。

由于(我认为)git版本1.7.8,从2011年12月2日1) ,git支持所谓的凭据助手
请参阅gitcredentials(7)联机帮助页

(这个手册还介绍了core.askpass在core.askpass适合的)。

默认的git安装包括两个助手:

  • caching :有关详细信息,请参阅git-credential-cache(1) 。

    在内存中caching凭据一段时间。 存储的凭证永远不会触及磁盘,并在可configuration的超时后被遗忘。

  • 存储 :详情请参阅git-credential-store(1) 。

    将凭证无限期地存储在磁盘上。 该文件将设置其文件系统权限,以防止系统上的其他用户读取它,但不会被encryption或以其他方式保护。 与Eddie响应中的 .netrc解决scheme具有相同的安全性


在KDEWallet(KDE), GNOME Keyring , Windows Credential Store ,MacOS X Keychain等存储用户名和密码方面有一些第三方证书助手。


脚注:

1) 设置Git GitHub帮助页面提到

你需要git 1.7.10或更新版本来使用凭证助手

由于git 1.8.3 (2013年5月),你现在可以指定一个encryption的.netrc git使用:

添加了一个新的只读凭证助手 (在contrib/credential/netrc/ )与.netrc/.authinfo文件进行交互。

该脚本将允许您使用gpgencryption的netrc文件 ,避免将凭据存储在纯文本文件中的问题。

 -f|--file AUTHFILE specify netrc-style files. 

parsing之前,具有.gpg扩展名的文件将由GPG解密。
多个-f参数是可以的。 它们按顺序处理,find的第一个匹配条目通过证书助手协议返回(见下文)。

如果未指定-f选项, .authinfo.gpg按照以下顺序使用主目录中的.authinfo.gpg.netrc.gpg.authinfo.netrc文件。

要启用此凭证助手:

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

(请注意,Git会在助手名称前添加“ git-credential- ”并在path中查找它。)


在以下url查看完整的分步示例
“ 有没有办法在使用https://github.com时跳过密码input ”。

安全选项是使用公钥/私钥对的普通SSH。