Git http - 安全地记住凭据

时间:2011-05-31 18:39:23

标签: git authentication

有没有办法安全地让git在通过HTTP(S)连接到远程存储库时记住我的凭据?

我尝试了git-config中详述的core.askpass方法,让外部脚本提供我的凭据。虽然它工作得很好,但用户名和密码仍然以纯文本形式存储在小shell脚本中。

5 个答案:

答案 0 :(得分:63)

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

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

machine myRemoteServer
login myUserName
password s3cret

有关完整服务器端配置的信息,请参阅https://stackoverflow.com/questions/3947530/git-push-fatal-failed/7177690#7177690,其中包含对ldap服务器的调用。

答案 1 :(得分:48)

由于(我认为)git版本1.7.8,从2011年12月2日起 1),git支持所谓的凭证帮助

有关详细信息,请参阅 gitcredentials(7) 联机帮助页 (此联机帮助页还描述了core.askpass适用于此的位置。)

默认的git安装包括两个帮助程序:

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

    在内存中缓存凭据一小段时间。存储的凭据永远不会触及磁盘,在可配置的超时后会被忘记。 请注意,它是纯Unix解决方案,因为它使用socket与守护进程通信。

  • 商店:有关详细信息,请参阅git-credential-store(1)

    将凭据无限期地存储在磁盘上。该文件将设置其文件系统权限,以防止系统上的其他用户读取它,但不会加密或以其他方式受到保护。与Eddie response

  • 中的.netrc解决方案相同的安全性

有一些第三方凭据助手用于在KDEWallet(KDE),GNOME KeyringWindows Credential Store(现在已集成在Git for Windows中),在MacOS中存储用户名和密码X钥匙扣等


<强> 脚注:

1) Set Up Git GitHub帮助页面提到

  

您需要git 1.7.10 或更新才能使用凭证助手

答案 2 :(得分:14)

git 1.8.3(2013年5月)以来,您现在可以为要使用的git指定加密.netrc

  

已添加 new read-only credential helper (在contrib/credential/netrc/中)与.netrc/.authinfo文件进行互动。

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

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

具有.gpg扩展名的文件将在解析前由GPG解密   多个-f参数都可以。它们按顺序处理,找到的第一个匹配条目通过凭证帮助程序协议返回(见下文)。

     

如果未给出-f选项,则您的主目录中的.authinfo.gpg.netrc.gpg.authinfo.netrc文件将按此顺序使用。< / p>      

启用此凭据帮助程序:

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

(请注意,Git会将“git-credential-”添加到帮助程序名称并查找它   在路上。)


在以下位置查看完整的分步示例
Is there a way to skip password typing when using https://github.com”。

答案 3 :(得分:2)

安全选项是使用具有公钥/私钥对的常规SSH。

答案 4 :(得分:1)