当我签署标签时,如何让 git 自动输入我的密码。有没有像 -- passphrase "my long passphrase" 这样的选项,我确实尝试过使用 ssh-keygen 但它没有帮助。
存储库在本地,一切都在本地完成。
正如 mipadi 所说,正在请求的是您的 GPG 密钥密码。正如您所建议的那样,您真的不希望在命令行上使用它,因为这可能会使其对其他用户可见,从而损害您的安全性。知道了这一点,gpg 和 git 的创建者不会让你这样自取其辱。当然,这会引发一个问题,即如何以自动方式执行此操作,这样您就不会因为输入密码一百次而丧命。
对此gpg-agent
非常有用。您可能需要将它与 gpg 分开安装(例如,在 Ubuntu 上,您需要 package gnupg-agent
)。然后确保~/.gnupg/gpg.conf
包含该行(未注释):
use-agent
安装 gpg-agent 后,您的系统可能会自动为您调用它。如果定义了环境变量GPG_AGENT_INFO
,那么您就可以开始了。否则,启动代理:
eval $(gpg-agent --daemon --sh)
(这适用于 bash;根据其他 shell 的需要进行调整。)
现在,当您需要解锁 GPG 密钥时,您应该会看到一个弹出窗口(或其他方法)供您输入密码。输入后,您无需再次输入,因为所有其他请求都将发送给已解锁您的密钥的代理。
系统要求您提供 GPG 钥匙串密码,而不是 SSH 密码。输入比代替。
如果有人感兴趣,我确实找到了解决问题的方法。
1.使用此内容创建新的 /usr/bin/gpg-with-passphrase
/usr/bin/gpg --passphrase "My Really Long passphrase" --batch --no-tty "$@"
2.使新的 /usr/bin/gpg-with-passphrase 可执行
chmod 755 /usr/bin/gpg-with-passphrase
3.将此选项添加到 git config
git config gpg.program "/usr/bin/gpg-with-passphrase"
使用“--global”表示全局
这样我每次签署标签时都不必输入我的长密码。