Unix gpg解密失败,没有密钥错误
我有一个gpg.key文件,用作解密.dat.pgp文件的密码短语。使用以下命令在一台服务器上使用相同的.key文件成功解密加密的.data.pgp文件Unix gpg解密失败,没有密钥错误,unix,encryption,public-key-encryption,gnupg,Unix,Encryption,Public Key Encryption,Gnupg,我有一个gpg.key文件,用作解密.dat.pgp文件的密码短语。使用以下命令在一台服务器上使用相同的.key文件成功解密加密的.data.pgp文件 cat xxx_gpg.key | /usr/bin/gpg --batch --quiet -o xxx.dat --passphrase-fd O -d xxx.dat.pgp 但是,当我将同一个密钥移动到另一个服务器xxx_gpg.key并运行上述相同的命令时,会出现以下错误- gpg: decryption failed: No se
cat xxx_gpg.key | /usr/bin/gpg --batch --quiet -o xxx.dat --passphrase-fd O -d xxx.dat.pgp
但是,当我将同一个密钥移动到另一个服务器xxx_gpg.key并运行上述相同的命令时,会出现以下错误-
gpg: decryption failed: No secret key
编辑:
我发现gpg--list secret keys
在它工作的服务器上返回一些数据,但没有返回其他服务器的结果
我们如何配置密钥看起来密钥不在另一台计算机上,因此即使使用正确的密码短语(从文件读取),它也无法工作 因此,这些选项应该有效
- 或者将密钥环复制到另一台机器上(可能只需要密钥环,但公共环是公共的)
- 或者导出密钥,然后在另一台计算机上导入
man gpg
中的一些有用的外观选项:
--导出
从所有钥匙环(默认钥匙环和其他钥匙环)导出所有钥匙 通过选项
--keyring
)注册,或者如果至少给出了一个名称,
那些同名的。新的密钥环被写入标准输出或
带有选项--output
的文件。与--armor
一起使用,以
把那些钥匙寄出去
--导出密钥
与导出相同,但导出密钥
--导入
--快速导入
导入/合并键。这会将给定的密钥添加到密钥环中。禁食 版本目前只是一个同义词 也许
--keyring文件
将文件添加到钥匙圈的当前列表中。如果文件以波浪号开头 和斜杠,它们被$HOME目录替换。如果文件—— 名称不包含斜杠,假定它位于GnuPG主页中 目录(~/.gnupg)(如果未使用--homedir或$GNUPGHOME) 请注意,这将向当前列表中添加一个键环。如果意图是 要单独使用指定的钥匙圈,请将
--keyring
与--no default keyring
一起使用
--密钥环文件
与
--keyring
相同,但用于密钥环
我刚刚在Arch Linux的gpg CLI上遇到了这个问题。我需要终止现有的“gpg代理”进程,然后一切都恢复正常(再次调用gpg命令时,新的gpg代理应该自动启动;…)
- 编辑:如果进程无法重新加载(例如在一分钟内),请在终端中键入
,然后重新启动gpg agent
pass
时会出现此错误
只要把终端窗口调高几行就行了
非常令人困惑。遵循这个程序对我来说很有效 创建gpg密钥。
gpg--gen key--homedir/etc/salt/gpgkeys
导出公钥、密钥和机密子密钥
gpg --homedir /etc/salt/gpgkeys --export test-key > pub.key
gpg --homedir /etc/salt/gpgkeys --export-secret-keys test-key > sec.key
gpg --homedir /etc/salt/gpgkeys --export-secret-subkeys test-key > sub.key
现在使用以下命令导入关键点
gpg --import pub.key
gpg --import sec.key
gpg --import sub.key
验证是否已导入密钥
gpg --list-keys
gpg --list-secret-keys
创建一个示例文件
echo“hahaha”>a.txt
使用导入的密钥加密文件
gpg--encrypt--sign--armor--r测试密钥a.txt
要解密文件,请使用以下命令
gpg --import pub.key
gpg --import sec.key
gpg --import sub.key
gpg--decrypt a.txt.asc
我在尝试通过su-
从不同的用户帐户解密密钥时遇到了相同的错误。(就像杰亨德伦在回答中建议的那样)
在我的例子中,发生这种情况是因为通常会启动一个图形化的pinentry
提示,这样我就可以输入密码来解密密钥,但是su-
ed-to-user无法访问当前运行的(图形)X-Window-System
解决方案是在同一控制台中(作为X服务器当前运行的用户)发出以下问题:
xhost+local:
允许其他本地用户访问当前运行的(local)X-Server。在那之后,出现了pinentry
提示,我可以输入密码来解密密钥,它工作了
当然,您也可以通过
ssh
连接转发X。为此,在从一台机器迁移到另一台机器时,请查看ssh
-X参数(客户端)和x11正向yes
(服务器端)。-
gpg --decrypt --pinentry-mode=loopback <file>