签名标签时让 git 自动输入我的密码。 有没有这样的选项——密码短语"我的长密码",我确实尝试使用 ssh-keygen,但它没有帮助。
存储库在本地,一切都在本地完成。
正如 mipadi 所说,请求的是您的 GPG 密钥密码。 您真的不希望像您建议的那样在命令行上使用它,因为这可能会使其他用户可以看到它,从而损害您的安全性。 知道了这一点,gpg 和 git 的创造者不会让你那样在自己的脚上开枪。 当然,这引发了一个问题,即如何以自动方式执行此操作,这样您就不会在输入密码一百次时自杀。
gpg-agent
对此非常有用。 您可能需要将其与gpg分开安装(例如,在Ubuntu上,您需要软件包gnupg-agent
)。 然后确保~/.gnupg/gpg.conf
包含以下行(未注释):
use-agent
安装 gpg 代理后,您的系统可能会自动为您调用它。 如果定义了环境变量GPG_AGENT_INFO
,那么您就可以开始了。 否则,请启动代理:
eval $(gpg-agent --daemon --sh)
(这是针对 bash 的;根据其他炮弹的需要进行调整。
现在,当您需要解锁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 配置
git config gpg.program "/usr/bin/gpg-with-passphrase"
使用"--global"表示全局
这样,我就不必在每次签署标签时都输入我的长密码短语。