使用Git存储密码安全吗?

34

我在工作中使用 Git,公司政策不允许我以不安全的方式存储密码。除了使用 git config credential.helper store 将密码存储到 Git 服务器之外,是否有更好的选择?

顺便说一句,由于我们的服务器不允许使用密钥身份验证,因此不能使用它。


1
更好的安全措施是完全避免使用密码。如果可以的话,使用ssh和ssh密钥来访问代码库。 - Schwern
同意,我在GitHub上使用它,但不幸的是我们的服务器只使用https。 我不能更改它,因为这是公司政策。 - dk14
我希望你是指 https - Schwern
问号告诉我你不确定这是否是政策。很多时候这些事情并不是政策。即使是政策,政策也可以改变。由你决定是否值得提出建议。 - Schwern
1个回答

72

git config credential.helper store 不是很安全;正如 documentation 中所说:

使用此助手将在磁盘上存储您的密码,未加密, 仅由文件系统权限保护

~/.git-credentials 文件将设置其文件系统权限,以防止系统上的其他用户读取它,但不会被加密或以其他方式受到保护。

因此,它会将您的密码存储为原始密码。Git 允许在 OSX 上使用您的钥匙串 git config --global credential.helper osxkeychain,因此似乎更安全。对于 Linux 系统,您可以使用 git config credential.helper cache,它将密码存储在内存中。或者,您可以按照 git help credentials 中所述编写自己的帮助程序:

您可以编写自己的自定义助手,与任何保存凭据的系统进行接口。有关详细信息,请参见 Git 的credentials API文档

此外,@VonC指出了基于GPG的跨平台解决方案。另请参阅有关.netrc文件的此问题
对于Linux还有gnome-keyring助手(感谢@jazakmeister的建议)。

6
使用 netrc gpg-encrypted 凭证助手:https://dev59.com/om435IYBdhLWcg3wkA5e#18362082。适用于任何平台,包括 Windows、OS X 和 Linux。 - VonC
3
还有一个gnome-keyring助手。 - John Szakmeister
3
我该如何在Windows中使用加密方式存储密码? - MasterJoe
@testerjoe,只需查看上面的评论即可。 - dk14
我在Ubuntu终端中运行了git config credential.helper cache,然后git pull要求输入凭据。再次运行git pull,没有要求输入凭据。它有效。 - julianm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接