gpg无法签署致命的数据:无法写入提交对象[Git 2.10.0]


319

我关注了Git 2.10发行说明中漂亮属性的几篇文章。经过将git升级到2.10.0并对global进行了更改,结果如下:.gitconfig

[filter "lfs"]
    clean = git-lfs clean %f
    smudge = git-lfs smudge %f
    required = true
[user]
    name = xyz
    email = abc.def@gmail.com
    signingkey = AAAAAAA
[core]
    excludesfile = /Users/xyz/.gitignore_global
    editor = 'subl' --wait
[difftool "sourcetree"]
    cmd = opendiff \"$LOCAL\" \"$REMOTE\"
    path = 
[mergetool "sourcetree"]
    cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
    trustExitCode = true
[alias]
    lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
[color "diff"]
    old = red strike
    new = green italic

但是现在我尝试使用

git commit -a -S -m "message"

我看到以下错误-

您需要一个密码来解锁密钥

用户:“ XYZ(数字签名)”

2048位RSA密钥ID AAAAAAAA,创建于2016年7月1日

错误:gpg无法对数据签名致命:无法写入提交对象

注意 -我仍然可以使用提交更改git commit -a -m "message"

有没有办法克服同样的问题?还是需要对gpg配置进行任何更改以适应git的升级?


更新1

在使用GPG密钥在Git中进行“自动签名”提交之后,还寻求进一步的有用性吗?。我已经使用配置了密钥

git config --global user.signingkey ED5CDE14(with my key) 
git config --global commit.gpgsign true

而且很明显还是遇到相同的错误。


3
我面临类似的问题。我在Windows上卸载了Git 2.8(git-scm)。并安装2.10。现在我gpg failed to sign the data每次使用都会得到-S。在2.8中,我可以毫无问题地签署提交。我不知道会发生什么
照明者

5
添加user.signingkey修复了我的问题,这很奇怪。
Xavier Ho

1
@nullpointer我从那里删除了我的答案,因为深入查看后我意识到这是重复的!
Shayan Amani

1
具有讽刺意味的是,我改变了机器以重新进行设置,最终找到了自己的问题,对我来说,所建议的解决方案都不够干净,只能上手。
纳曼

1
对我来说,修复是:git config user.name是!=创建PGP密钥时使用的名称
stacksonstacks

Answers:


462

我在OSX中遇到了这个问题。

原始答案:

这似乎是一个GPG更新(酿造)改为位置gpggpg1,你可以改变二元其中Git会查找了GPG:

git config --global gpg.program gpg1

如果你没有gpg1: brew install gpg1

更新的答案:

看起来gpg1已被弃用/ 已被轻度淘汰”,因此您可能实际上应该更新到gpg2,不幸的是,这涉及到很多步骤/一点时间:

brew upgrade gnupg  # This has a make step which takes a while
brew link --overwrite gnupg
brew install pinentry-mac
echo "pinentry-program /usr/local/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf
killall gpg-agent

第一部分安装gpg2,第二部分是使用它所需的技巧。对于故障排除,请参见以下答案(尽管这与linux无关),它建议进行良好的测试:

echo "test" | gpg --clearsign  # on linux it's gpg2 but brew stays as gpg

如果此测试成功(没有错误/输出包括PGP签名),则您已成功更新到最新的gpg版本。

现在,您应该可以再次使用git签名了!
值得注意的是,您需要具备以下条件:

git config --global gpg.program gpg  # perhaps you had this already? On linux maybe gpg2
git config --global commit.gpgsign true  # if you want to sign every commit

注意:运行已签名的提交后,可以使用以下命令验证它是否已签名:

git log --show-signature -1

其中将包含最后一次提交的gpg信息。


7
将gpg.program设置为/ usr / local / bin / gpg(无“ 1”)对我来说已修复。
Iskar,2016年

5
似乎更新了gnupg2brew弄乱了符号链接,因此gpg被删除了,我使用修复了链接brew link --overwrite gnupg2
布莱斯

8
嗯...行不通。登录xcode仍然给我错误。
艾伯特·黄

1
@DrBeco不是原来的位置/行为吗?我仍然在osx上遇到同样的问题(我想我最近才更新了brew),gpg1仍然是导出的可执行文件。
安迪·海登

29
killall gpg-agent && gpg-agent --daemon --use-standard-socket --pinentry-program /usr/local/bin/pinentry终于为我修复了它
Dan

317

如果使用gnupg2和gpg-agent 2.x,请确保设置环境变量GPG_TTY

export GPG_TTY=$(tty)

有关常见问题,请参见GPG的文档


17
如果使用鱼,请set -x GPG_TTY (tty)在个人资料上输入。
fasfsfgs

@StuartCardall chown命令的作用是什么?通常,当您登录或创建伪tty时,它已经由系统进程分配给您。如果它是别人拥有的,并且您不是root用户,它将失败。如果该组是其他组,则可能无关紧要,并且用户通常不在tty组中。
poolie

@poolie-如果您suroot使用远程服务器,则很重要
Stuart Cardall

6
我将变量添加到,~/.zshrc并且现在它可以正确连接到终端了,我可以再次提交。感谢你的帮助!
亚历克斯·古罗拉


198

如果一切失败,GIT_TRACE=1请尝试查看git实际在做什么:

$ GIT_TRACE=1 git commit -m "Add page that always requires a logged-in user"
20:52:58.902766 git.c:328               trace: built-in: git 'commit' '-vvv' '-m' 'Add page that always requires a logged-in user'
20:52:58.918467 run-command.c:626       trace: run_command: 'gpg' '--status-fd=2' '-bsau' '23810377252EF4C2'
error: gpg failed to sign the data
fatal: failed to write commit object

现在,手动运行失败的命令:

$ gpg -bsau 23810377252EF4C2
gpg: skipped "23810377252EF4C2": Unusable secret key
gpg: signing failed: Unusable secret key

原来,我的钥匙已经过期了,git不该怪。


34
调试的好技巧。+1
VonC

4
这实际上帮助我解决了自己的问题,并且使用此状态消息可以解决每种类型的问题。+1
xHocquet

感谢您进行调试。我的钥匙也过期了。
Sgnl

2
谢谢!这导致了我的问题。奇怪的是我的地方.git/configname一个项目不匹配我的签名电子邮件中指定。那足以拒绝它。
kross

1
好吧,gpg -bsau <key>在我的机器上执行不会执行任何操作。这是否需要太长时间才能执行?还是这意味着该密钥可以使用?@VonC有什么见解吗?
纳曼

82

我已经度过这段短暂简单的食谱:

macOS上自动签名提交(全局和使用不同的IDE):

signingkey这种方式得到你。

brew install gnupg gnupg2 pinentry-mac
git config --global user.signingkey <YOUR_SIGNING_KEY>
git config --global commit.gpgsign true
git config --global gpg.program gpg

将以下内容放入gpg.conf文件(使用nano ~/.gnupg/gpg.conf命令编辑文件):

no-tty

将以下内容放入gpg-agent.conf文件(使用nano ~/.gnupg/gpg-agent.conf命令编辑文件):

pinentry-program /usr/local/bin/pinentry-mac

更新

根据注释,您可能需要killall gpg-agent在编辑配置文件后执行命令gpg.conf。正如不言自明的命令所述,此命令将终止GPG(Gnu隐私卫士)代理。


2
您还能解释这些命令在做什么吗?这将有助于理解。
Droid

7
killall gpg-agent设置配置文件后,我还必须运行一个,然后它起作用了!
Pascal Ludwig

我们怎么知道我们可以信任背后的人pinentry-mac?我不是说我们不能,但是GPGTools org由一个很小的团队备份,该回购库只有5个贡献者,而使用gnupg.org则brew install gnupg可以利用。
sunknudsen

万一它对其他人有帮助,我的问题是我有一个无效的本地user.signingkey集,这在我的sourcetree配置中也没有注意到,也没有我的全局设置(因为我不希望查看本地配置),请确保这两个本地(git config --local --get user.signingkey)和全球(git config --global --get user.signingkey)是相同的,甚至更好,取消设置本地的,如果它是无效的(git config --local --unset user.signingkey
格伦还应键入devalias“

在OSX(10.13.06)上,它给出以下错误,bash:pinentry-program:找不到命令
cgl19年


37

请按照以下网址设置已签名的提交 https://help.github.com/en/articles/telling-git-about-your-signing-key

如果仍然获取gpg,则无法使数据签名致命:无法写入提交对象

这不是git的问题,这是GPG的遵循以下步骤

1。gpg --version

  1. echo "test" | gpg --clearsign

如果显示:

gpg: signing failed: Inappropriate ioctl for device
gpg: [stdin]: clear-sign failed: Inappropriate ioctl for device
  1. 然后使用 export GPG_TTY=$(tty)

4.然后再次尝试echo "test" | gpg --clearsign 获得PGP签名。

  1. git config -l | grep gpg

gpg.program = gpg commit.gpgsign = true

6.申请 git commit -S -m "commitMsz"


1
这是我的解决方案!非常感谢!
upInCloud

出色的演练,如何弄清楚这是否是问题所在。
菲利普·西诺雷

这就是为我做的。非常感谢!
艾伦·古瓦图德

export GPG_TTY=$(tty)是诀窍。补充说,为我的.zshrc文件
巴蒂尔史迪威

21

对于在MacOS计算机上面临此问题的任何人,请尝试以下操作:

  1. brew uninstall gpg
  2. brew install gpg2
  3. brew install pinentry-mac (如果需要的话)
  4. gpg --full-generate-key 通过使用算法创建密钥。
  5. 通过执行以下命令获取生成的密钥: gpg --list-keys
  6. 在这里设置密钥 git config --global user.signingkey <Key from your list>
  7. git config --global gpg.program /usr/local/bin/gpg
  8. git config --global commit.gpgsign true
  9. 如果您要将密钥导出到GitHub,则::gpg --armor --export <key> 并通过GPG密钥将该密钥添加到GitHub:https : //github.com/settings/keys(包括START和END行)

如果问题仍然存在:

test -r ~/.bash_profile && echo 'export GPG_TTY=$(tty)' >> ~/.bash_profile

echo 'export GPG_TTY=$(tty)' >> ~/.profile

如果问题仍然存在:

安装https://gpgtools.org并通过从菜单栏中按Sign来签署您使用的密钥:Key- > Sign

如果问题仍然存在:

转到:全局.gitconfig文件,该文件在我的情况是:/Users/gent/.gitconfig 与修改的.gitconfig文件(请确保邮箱和姓名与您已经在产生密钥创建一个相同的)

[user]
	email = gent@youremail.com
	name = Gent
	signingkey = <YOURKEY>
[gpg]
	program = /usr/local/bin/gpg
[commit]
	gpsign = true
	gpgsign = true
[filter "lfs"]
	process = git-lfs filter-process
	required = true
	clean = git-lfs clean -- %f
	smudge = git-lfs smudge -- %f
[credential]
	helper = osxkeychain


2
在.gitconfig中添加“ gpsign = true”对我来说已修复
Pierre

18

我的两分钱在这里:

在创建密钥并将其添加到gpg-agent时,您将定义一个passphrase。现在passphrase某个时间到期了,gpg需要您再次输入它来解锁密钥,以便您可以再次开始签名。

当您使用的任何其他程序与接口gpggpg的提示您输入您的密码会不会(基本上出现gpg-agent进程化不可能告诉你在输入对话框时stdin)。

解决方案之一是gpg --sign a_file.txt输入您在创建密钥时输入的密码,然后一切正常(gpg-agent应该自动签名)

有关如何为密码短语设置更长的超时时间的信息,请参见此答案,这样您就不必一直这样做。

或者您可以使用完全删除密码 ssh-keygen -p

编辑:做一个man gpg-agent阅读有关如何使上述自动发生的东西,并添加以下行:

GPG_TTY=$(tty)
export GPG_TTY

如果您使用的是bash,则在您的.bashrc上显示(这是正确的答案,但我的思路也同样如此)


谢谢@ george-daramouskas,这是我的问题。
Nic Barker

10

2016年10月更新:问题871确实提到“签名在Git 2.9.3中停止工作”

两天前(2016年10月4日)发布的Git for Windows 2.10.1已修复了提交和标记的Interactive GPG签名。

最近git中gpg-sign的变化(在Linux上没有引入问题)暴露了Windows上非MSYS2-git与MSYS2-gpg交互的方式的问题。


原始答案:

阅读“ 7.4 Git工具-对您的工作进行签名 ”,我假设您已user.signingkey设置了“ ”配置。

关于gpg的最后一个大型重构(在Git 2.10之前)是在commit 2f47eae2a中,此处错误消息已移至gpg-interface.c

该文件上的日志显示了提交af2b21e(Git 2.10)中的最新更改

默认情况下,gpg2已经使用长格式,但是由于兼容性原因,大多数发行版似乎仍将“ gpg”作为较早的1.x版本。而较早版本的gpg仅显示32位短ID,这是非常不安全的。

这对于验证本身实际上并不重要:如果验证通过,则pgp签名是好的。
但是,如果您实际上还没有密钥,并且想获取它,或者您想确切地检查用于验证的密钥并希望对其进行校验,则我们应该更精确地指定密钥。

因此,请检查您如何指定user.signingkey配置以及所使用的gpg的版本(gpg1或gpg2),以查看它们是否对错误消息有影响。

还有一个commit 0581b54,它会更改gpg failed to sign the data错误消息的条件(作为对commit 0d2b664的补充):

我们目前根本没有从stderr阅读。但是,我们将需要在将来的补丁中使用,因此这也为我们做好了准备(在这种情况下,gpg 确实会在读取所有输入之前进行写操作,尽管如此,键uid不太可能会填满管道缓冲区)。

提交4322353显示gpg现在使用临时文件,因此可能存在正确的问题。

让我们转换为使用一个tempfile对象,该对象为我们处理困难的情况,并添加缺少的清理调用。


我有我的user.signingkey配置集。也使用gpg (GnuPG) 2.0.3
纳曼

@nullpointer我已经编辑了答案。您可以检查Gti For Windows 2.10.1是否仍然存在该问题。
VonC

对于较晚的更新感到抱歉,它在MacOSX而不是Windows上运行,因此无法验证此。
纳曼

10

git跟踪非常适合我的情况...

   GIT_TRACE=1 git commit -m "a commit message"
   13:45:39.940081 git.c:344               trace: built-in: git commit -m 'a commit message'
   13:45:39.977999 run-command.c:640       trace: run_command: gpg --status-fd=2 -bsau 'full name <your-email@domain.com>'
   error: gpg failed to sign the data
   fatal: failed to write commit object

我需要根据要git检查的格式生成一个初始密钥。最好按-bsau原样复制传递到上面的值,并在下面使用。

就这样,

   gpg --quick-generate-key "full name <your-email@domain.com>"

然后它起作用了。

希望能有所帮助。


这对我git trace有用,真的很有帮助。
philip oghenerobo balogun

1
队友...您无法想象我花了多少时间试图解决这个问题,直到我收到您的答复...这一直是键的命名..谢谢!谢谢!谢谢!
giomanda

8

我最近使用cygwin切换到gpg2。然后我在设置后用git签名时遇到了同样的问题git config gpg.program gpg2

尝试echo "test" | gpg2 --clearsign查看gpg2是否正常工作。我发现它只是set的最简单解决方案git config gpg.program gpg,因为它可以工作。但是这样您也会得到更好的错误-例如,您需要安装pinentry。


实际上,在某些Linux发行版上,您可能会遇到相同的问题。Git始终使用gpg,而不是gpg2。另请参阅:stackoverflow.com/questions/34766123/…–
地毯

这为我揭示了gpg: signing failed: Inappropriate ioctl for device可以解决的错误export GPG_TTY=$(tty)。资料来源:github.com/keybase/keybase-issues/issues/2798
swiknaba,

8

在OS X上,使用gnupg2via brew我只需要杀死gpg代理,有时会发生:

pkill -9 gpg-agent

env根据需要设置变量:

export GPG_TTY=$(tty)

另请参阅常见GPG问题,以及此处的答案。


2
这也为我工作。我创建了一个新别名alias fix-gpg='pkill -9 gpg-agent && export GPG_TTY=$(tty)'
oalders

1
很好,谢谢。之后甚至不需要设置env变量。
Nick Rameau

7

我见过类似的答案,但没有什么比对我有用的了。在Linux上,我必须使用以下命令终止并重新启动gpg-agent

$ pkill gpg-agent
$ gpg-agent --daemon
$ git commit ...

这对我有用。看来您确实需要根据user.signingkey其他评论的意见设置您的私钥。

$ git config --global user.signingkey [your_key_hash]


6

我在Ubuntu 18.04上收到此错误,结果证明我的密钥已过期

为了看到这一点,我运行了它并确认我的密钥已过期:

gpg --list-keys

为了解决这个问题,我运行了(使用上一条命令中显示的ID):

gpg --edit-key <ID>

从那里开始,我扩展了这些说明的有效期key 0key 1遵循这些说明,最终将其归结为键入key 0然后expire遵循提示。然后重复key 1

之后,为了测试这一点,我跑了:

echo test | gpg --clearsign

在修复之前,它因错误而失败:

gpg:无默认密钥:无密钥
gpg:[stdin]:清除符号失败:无密钥

但是在修复之后,相同的命令成功地对消息进行了签名,因此我知道事情再次起作用了!


从Mac OSX Catalina导入有效密钥到CentOS7时,确认此问题已解决。与这只野兽战斗了两个多小时,试图弄清为什么它不断要求输入密码。奇怪的是,它已经被设置为永不过期,而我将其设置为仍永不过期。
科迪B

5

我遇到了同样的问题。我很高兴地报告说,问题不在于,git 2.10.0而在于gnupg 1.4.21

暂时将gnupg降级为1.4.20为我解决了该问题。

如果您使用自制软件,并且像我一样升级了软件包,则可能只需运行brew switch gnupg 1.4.20即可还原。


3

确保您的电子邮件设置正确。

git config --global user.email "user@example.com"

1
这是唯一对我有用的解决方案,有助于遵循通过github
Naz

1
就我而言,问题是我在特定回购中使用公司电子邮件,但没有为其生成PGP密钥。
rubick

3

如果与GPG密钥的uid关联的电子邮件与您在git中使用的电子邮件不同,则需要向密钥添加另一个用户ID或使用与电子邮件完全匹配的密钥。

您可以使用以下方法添加另一个UID:

$ gpg-编辑键

有关更多信息,请参见/superuser/293184/one-gnupg-pgp-key-pair-two-emails


1
这是给我的。基督,没有比“无法签名数据”更多的错误信息了。
亚历克

3

我一定不小心以某种方式更新了gpg,因为在尝试测试gpg是否有效后我得到了以下信息:

gpg: WARNING: server 'gpg-agent' is older than us (2.1.21 < 2.2.10)
gpg: Note: Outdated servers may lack important security fixes.
gpg: Note: Use the command "gpgconf --kill all" to restart them.

运行gpgconf --kill all为我修复了它。

希望这对某人有帮助。


2

我在使用最新的Git源(2.12.2)以及所有依赖项(Zlib,Bzip,cURL,PCRE,ReadLine,IDN2,iConv,Unistring等)的最新源时遇到了类似的问题。

原来libreadline是给了GnuPG问题:

$ gpg --version
gpg: symbol lookup error: /usr/local/lib/libreadline.so.7: undefined symbol: UP

当然,尝试从Git获取有用的信息-vvv失败了,所以失败是一个谜。

要解决由于ReadLine而导致的PGP故障,请按照无法更新或使用程序包管理器-gpg错误中的说明进行操作

在终端:

ls /usr/local/lib

那里有一堆readline库(libreadline.so.BLAH-BLAH),所以我:

su
mkdir temp
mv /usr/local/lib/libreadline* temp
ldconfig

2

上面的答案很好,但是对我没有用。解决我的问题的是导出公共密钥和秘密密钥。

列出我们要从中导出机器的密钥

$ gpg --list-keys
/home/user/.gnupg/pubring.gpg
--------------------------------
pub 1024D/ABCDFE01 2008-04-13
uid firstname lastname (description) <email@example.com>
sub 2048g/DEFABC01 2008-04-13

导出密钥

$ gpg --output mygpgkey_pub.gpg --armor --export ABCDFE01
$ gpg --output mygpgkey_sec.gpg --armor --export-secret-key ABCDFE01

转到我们要导入的机器并导入

$ gpg --import ~/mygpgkey_pub.gpg
$ gpg --allow-secret-key-import --import ~/mygpgkey_sec.gpg

宾果邦戈,您完成了!

参考:https : //www.debuntu.org/how-to-importexport-gpg-key-pair/

ps。我的密钥最初是在Bootcamp Windows 7上制作的,然后将它们导出到我的Mac Air(同一台物理计算机,实际上有所不同)上


2

我在Ubuntu 18.04上遇到相同的错误,也担心了数周。终于意识到gpg2没有指向任何东西。所以只需运行

git config --global gpg.program gpg

和田田,它就像魅力。

签名提交

您的提交现在将带有已验证的标签。


2

我偶然发现此错误不是由于任何配置问题,而是因为我的密钥已过期。在OSX上扩展其有效性的最简单方法是打开GPG钥匙串应用程序(如果已安装),它将自动提示您扩展它。两次单击,您就完成了。希望这对其他Google员工有所帮助:)


2

在Ubuntu上我突然开始发生这种情况,不确定是否最近进行了一些更新,但是没有一个适用于我的现有问题(我已GPG_TTY设置,试图杀死该代理等)。独立gpg命令因以下错误而失败:

$ echo "test" | gpg --clearsign
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

test
gpg: signing failed: Operation cancelled
gpg: [stdin]: clear-sign failed: Operation cancelled

我尝试gpg使用--debug-alloption 运行,并注意到以下输出:

gpg: DBG: chan_3 <- INQUIRE PINENTRY_LAUNCHED 27472 gnome3 1.1.0 /dev/pts/6 screen-256color -
gpg: DBG: chan_3 -> END
gpg: DBG: chan_3 <- ERR 83886179 Operation cancelled <Pinentry>
gpg: signing failed: Operation cancelled

以上表明程序存在问题pinentry。Gpg通常pinentry-curses为我运行,因此我将其更改为pinentry-tty(我必须aptitude install首先更改),并且错误消失了(尽管我不再获得全屏密码输入,但无论如何我还是不喜欢这样)。要进行此更改,我必须将行添加pinentry-program /usr/bin/pinentry-tty~/.gnupg/gpg-agent.conf并杀死代理gpgconf --kill gpg-agent(下次重新启动它)。


1

以上答案似乎都不符合我的问题。我的gpg二进制文件(/usr/local/bin/gpg -> /usr/local/MacGPG2/bin/gpg2)是作为GPG Suite的一部分安装的,而不是通过brew安装的。

不过,我觉得建议可以归结为:“使用Brew gpg上最新的二进制文件”。所以我尝试了:

brew update
brew upgrade git
brew install gpg

# the following are suggestions from brew's Caveats, to make `/usr/local/bin/gpg`
# point to the brew binary:
rm '/usr/local/bin/gpg'
brew link --overwrite gnupg2

我核实,我已经正确地改变了gpg在我$PATH来点,从酿造新的可执行文件:

🍔 which gpg
/usr/local/bin/gpg
🍔 ls -l /usr/local/bin/gpg
lrwxr-xr-x  1 burger  admin  33 Feb 13 13:22 /usr/local/bin/gpg -> ../Cellar/gnupg2/2.0.30_3/bin/gpg

我还明确告诉git gpg使用哪个二进制文件:

git config --global gpg.program gpg

好吧,也许这并不完全是水密的,因为它对路径很敏感。实际上,我丝毫没有怀疑git已经转向调用啤酒gpg

无论如何:这些都不足以git commit再次成功签署我的提交。


最终对我有用的是更新GPG Suite。我正在运行版本2016.7,发现更新到2016.10为我解决了该问题。

我打开GPG Keychain.app,然后点击“检查更新...”。使用新版本:已签名的提交再次正常工作。


我尝试更新到最新版本...也没有用。尝试登录xcode。
艾伯特·黄


1

与@birchlabs非常相似,经过大量的搜索/搜索,我发现它不是GPG,而是GPG Suite。我做到了cask reinstall gpg-suite,它为我解决了。


0

如果这种情况是随机发生的,并且在过去一直运行良好(例如我的情况),请尝试注销(cmd+shift+q)并重新登录。



0

有点奇怪,但是请确保您的终端足够大!您可以通过运行来判断它是否太小echo test | gpg --clearsign-它会给您一个非常明显的错误消息,让您知道。如果不够大,您的GPG代理将无法显示其小的ncurses框。

如果您使用GUI代理或不使用ncurses的工具,则此方法将不适用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.