飘在云端

东西南北,海角天涯

· Linux · · 246次浏览

gpg 签名提交失败的一个可能原因

全程跟着 GitHub 官方指南生成、添加 gpg 的步骤,各种排查半天没发现异常,最后还是解决了


我的情况是在 Linux tmux 上面进行提交的, git commit -m "example" 提交时一直报错

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

这时候你看下是不是使用的非默认 bash,或者正在使用 tmux 之类的终端复用管理工具

如果当前终端非默认 bash,比如你使用了 zshrc,可能需要设置 GPG_TTY 环境变量来让 gpg 识别你当前所用的终端

cat <<< 'export GPG_TTY=$(tty)' >> /etc/profile && source /etc/profile

为什么要多此一举,还是因为安全原因,GPG 为了在正确的 TTY 上运行 pinentry(弹出密码输入窗口),需要知道当前的终端是什么,以便在没有图形界面的情况下安全地输入密码
在GPG 2.2.13+ 版本中,为了使 gpg 在命令行界面提示密码,应该将 export GPG_TTY=$$(tty) 添加到默认的 .bashrc 或其他 bash 的配置文件

评论 (0条)