当通过 HTTP (S)连接到远程存储库时,有没有一种方法可以让 git 安全地记住我的凭据?
我已经尝试了 git-config中详细介绍的 core.askpass方法,让外部脚本提供我的凭据。虽然它工作得很好,但是用户名和密码仍然存储在小 shell 脚本中的纯文本中。
git-config
core.askpass
安全选项是使用带有公钥/私钥对的常规 SSH。
git在 HTTP 上运行时调用 cURL。您可以通过在用户的主目录中设置一个 .netrc文件并将其私有化(Linux 中为0600)来存储安全凭据。
git
.netrc
该文件的内容提供每个远程域的用户名和密码。
machine myRemoteServer login myUserName password s3cret
有关完整的服务器端配置,请参见 https://stackoverflow.com/questions/3947530/git-push-fatal-failed/7177690#7177690,它可以很容易地包括对 ldap 服务器的调用。
这个可能对你有用... http://samuel.kadolph.com/2011/03/store-your-git-https-passwords-in-your-os-x-keychain/
自从(我认为) git 版本1.7.8,从20111)的12月2日开始,git 就支持所谓的 证件助手。
有关详细信息,请参阅 Gitcredentials.html”rel = “ noReferrer”> git 凭证(7) 手册 (这个手册还描述了 core.askpass在哪里适合这个)。
默认的 git 安装包括两个助手:
Cache : 有关详细信息,请参见 Git-credential-cache (1)。
在内存中缓存一段短时间的凭据。存储的凭据永远不会触及磁盘,并且在可配置的超时后会被遗忘。< em > 注意,它是仅 Unix 解决方案,因为它使用套接字与守护进程通信。
Store : 有关详细信息,请参见 Git-credential-store (1)。
在磁盘上无限期地存储凭据。该文件将设置其访问许可权,以防止系统上的其他用户读取它,但不会加密或以其他方式保护。Eddie 响应中与 .netrc解决方案相同的安全性
在 KDEWallet (KDE)、 GNOME Keyring、 视窗资料库(现在集成在 适用于 Windows 的 Git中)、 MacOS X Keychain 等中存储用户名和密码时,有一些第三方凭证助手。
脚注:
1) 设置 Git GitHub 帮助页面提到
您需要 git1.7.10或更新的版本才能使用凭据助手
自从 Git 1.8(2013年5月)以来,您现在可以指定一个 加密 .netrc供 git 使用:
已经添加了一个 新的只读凭证助手(在 contrib/credential/netrc/中)来与 .netrc/.authinfo文件进行交互。
contrib/credential/netrc/
.netrc/.authinfo
该脚本将允许您使用 使用 gpg 加密的 netrc 文件,从而避免将凭据存储在纯文本文件中的问题。
-f|--file AUTHFILE specify netrc-style files.
带有 .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-
见 完整的一步一步的例子: “ 在使用 https://github.com时是否有办法跳过输入密码”。
https://github.com