gpt4 book ai didi

git - `git -S -m commit` 请求密码失败 — 从 GPG mac 移动到 GPG shell 后签名

转载 作者:太空狗 更新时间:2023-10-29 13:00:20 28 4
gpt4 key购买 nike

我正在为 Web 开发设置新机器 (macOS Sierra),我已经完成 brew install gpg 安装了 gpg2gpg-agent。我已经从旧 Mac 上的 ~.gnupg 复制了我的 key 。我安装我在旧机器上安装的 mac 界面 GPG 套件,因为我真的更愿意只使用命令行。

我已经使用适当的设置设置了我的 git 全局变量。

    git config --global user.name "Christopher Allen"
git config --global user.email "ChristopherA@LifeWithAlacrity.com"
git config --global user.mail "ChristopherA@LifeWithAlacrity.com"
git config --global user.signingKey F8D36C91357405ED

当我尝试将更改提交到需要 git config commit.gpgsign=true 的 git 存储库时,在我的旧 GPG Suite 上,我会看到一个 pop 窗口,要求我输入密码。但是,仅使用 GPG,它确实可以正确找到我的公钥,但不会提示我输入密码进行签名。

    $ git commit -S -m "changed code"

You need a passphrase to unlock the secret key for
user: "Christopher Allen <ChristopherA@LifeWithAlacrity.com>"
4096-bit RSA key, ID 357405ED, created 2015-04-16

error: gpg failed to sign the data
fatal: failed to write commit object
$

在这里进行研究,我唯一看到的提及是“I can’t get `git tag -s` to ask for my GPG password”,它表明问题出在 gpg-agent 的环境变量(没有建议的解决方案),或者使用 gpg -preset-passphrase 函数(我不想这样做)。

进一步检查,gpg-agent 似乎没有运行:

    $ gpg-agent
gpg-agent: no gpg-agent running in this session

我找到了这个页面 https://blog.chendry.org/2015/03/13/starting-gpg-agent-in-osx.html建议将此脚本添加到 .bash_profile:

    [ -f ~/.gpg-agent-info ] && source ~/.gpg-agent-info
if [ -S "${GPG_AGENT_INFO%%:*}" ]; then
export GPG_AGENT_INFO
else
eval $( gpg-agent --daemon --write-env-file ~/.gpg-agent-info )
fi

获取此脚本后,gpg-agent 说:

    $ gpg-agent
gpg-agent: gpg-agent running and available

但是,我还是遇到了同样的问题。

关于如何解决这个问题的任何想法?我不想使用旧的 GPG 套件,恢复到 GPG 1.0,或者使用 gpg-preset-passphrase。

谢谢!

-- 克里斯托弗·艾伦

最佳答案

我实际为解决这个问题所做的是:

安装pinentry

brew install pinentry

如果那还不行,那么:

在询问密码时告诉 GPG 使用哪个 tty

export GPG_TTY=$(tty)

这实际上为我解决了问题。

您还可以将此导出添加到您的 ~/.bashrc 以便它自动导出不要忘记重新加载文件或启动新 session 。

一个简单的方法:echo "export GPG_TTY=$(tty)">> ~/.bashrc

如果出现此错误:

gpg-agent: 没有 gpg-agent 在这个 session 中运行

将问题中提到的脚本添加到 ~/.bashrc 文件中。

[ -f ~/.gpg-agent-info ] && source ~/.gpg-agent-info
if [ -S "${GPG_AGENT_INFO%%:*}" ]; then
export GPG_AGENT_INFO
else
eval $( gpg-agent --daemon --write-env-file ~/.gpg-agent-info )
fi

测试 gpg 是否正常工作

回声“你好” | gpg -s

随机它仍然不要求输入密码

当 git 不要求我输入密码时,有时我会使用上面的测试命令来获得提示,这将被缓存,然后我尝试提交我的更改。

增加密码缓存时间

如果您想将密码缓存更长的时间,您可以将以下行添加到配置文件中:~/.gnupg/gpg-agent.conf

default-cache-ttl       86400

关于git - `git -S -m commit` 请求密码失败 — 从 GPG mac 移动到 GPG shell 后签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39669830/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com