`git config --global credential.helper 'cache'` 的 Git 凭证缓存有多安全?

4
如何使用 git HTTPS 凭证缓存 git config --global credential.helper 'cache 相比使用 git SSH 密钥身份验证,在安全方面有何不同? git credential.helper cache文档中写道:
The stored credentials never touch the disk, and are forgotten after a configurable timeout. The
cache is accessible over a Unix domain socket, restricted to the current user by filesystem permissions.

我发现你可以使用echo url=https://[example.com] | git credential fill命令查看HTTPS缓存凭据。不确定这种方法相对于使用SSH密钥的安全性影响如何。如果其他人通过SSH以不同用户和不同SSH密钥登录了同一设备,他们是否也能够以此方式查看凭据?

考虑到使用两种方法,如果有人获得了访问您系统并扮演您的身份,他们就可以查看密码或SSH密钥,那么说HTTPS身份验证通常更安全是正确的吗,因为它:I)在给定时间后过期 II)重启后过期 III)可以配置为仅针对某些git操作进行权限范围限制?

1个回答

2
如果其他人使用不同的用户和SSH密钥SSH到同一设备,他们能否查看凭据?不会。因为文档提到,缓存是通过Unix域套接字访问的,由文件系统权限限制为当前用户。
就安全性而言,与使用git SSH密钥身份验证相比较呢?SSH密钥意味着您无需输入密码。为了在HTTPS中实现相同的效果,最好使用持久缓存,而不是临时缓存,在每个会话中需要输入密码。
最新的是 GCM-core: Git Credential Manager Core
它需要 安装,但一旦设置了 git config credential.helpermanager-core,它将会把密码(针对给定的 URL)存储在一个安全的本地保险库中,使用 libscret 来与“秘密服务”通信,通过 D-Bus 进行交互(gnome-keyringksecretservice 都是“秘密服务”的实现)。
Git 2.40 (2023年第一季度) 的详细信息包括缓存功能:
请参见提交4f54297(2023年1月28日)由M Hickford (hickford)提交。
(已于2023年2月8日被Junio C Hamano -- gitster --合并至提交c6dea59)

文档:澄清缓存在系统重启后会忘记凭据

签署者:M Hickford

git credential-cache 现在在其手册页中包含以下内容:

此命令为未来的 Git 程序缓存凭证。

存储的凭证保留在缓存守护进程的内存中(而不是写入文件),并在可配置的超时后被遗忘。

如果缓存守护进程死亡(例如,如果系统重启),则更早地忘记凭据。

缓存通过 Unix 域套接字访问,并受到文件系统权限的限制,仅限于当前用户。


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