for*_*rtm 32 unix encryption gnupg public-key-encryption
我有一个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
Run Code Online (Sandbox Code Playgroud)
但是,当我将相同的密钥移动到另一个服务器xxx_gpg.key并运行相同的上述命令时,我得到以下错误 -
gpg: decryption failed: No secret key
Run Code Online (Sandbox Code Playgroud)
编辑:
我发现它gpg --list-secret-keys返回服务器上的一些数据,但是没有为其他服务器返回结果.
我们如何配置密钥
Vic*_*art 34
我刚刚在Arch Linux的gpg CLI上遇到了这个问题.我需要杀死现有的"gpg-agent"进程,然后一切都恢复正常(一个新的gpg-agent自动启动; ......).
Xen*_*050 19
看起来密钥不在另一台机器上,因此即使使用正确的密码(从文件中读取)也不行.
这些选项应该有效
以下几个有用的选项man gpg:
--export
从所有密钥环(默认密钥环和通过选项注册的密钥环)导出所有密钥--keyring,或者如果至少给出一个名称,则输出给定名称的密钥.新密钥环将写入STDOUT或带有选项的文件--output.与--armor邮件一起使用.
--export-secret-keys
与之相同--export,但导出密钥.
--import
--fast-import
导入/合并密钥.这会将给定的密钥添加到密钥环.快速版本目前只是一个同义词.
有可能
--keyring file
将文件添加到当前密钥环列表中.如果文件以波浪号和斜杠开头,则这些文件将被$ HOME目录替换.如果文件名不包含斜杠,则假定它位于GnuPG主目录中(如果未使用--homedir或$ GNUPGHOME,则为"〜/ .gnupg").请注意,这会将密钥环添加到当前列表中.如果意图是单独使用指定的密钥环,请
--keyring同时使用--no-default-keyring.
--secret-keyring file
与--keyring秘密密钥环相同.
您也可能对此处的最佳答案感兴趣: https://askubuntu.com/questions/1080204/gpg-problem-with-the-agent-permission-denied
基本上对我也有用的解决方案是:
gpg --decrypt --pinentry-mode=loopback <file>
Run Code Online (Sandbox Code Playgroud)
我试图使用使用pass和gnugp2 (gpg2) 的aws-vault。我在 Ubuntu 20.04 上运行 WSL2。
我尝试了上述所有解决方案,最终,我不得不再做一件事——
$ rm ~/.gnupg/S.* # remove cache
$ gpg-connect-agent reloadagent /bye # restart gpg agent
$ export GPG_TTY=$(tty) # prompt for password
# ^ This last line should be added to your ~/.bashrc file
Run Code Online (Sandbox Code Playgroud)
这个解决方案的来源来自一些日语博客文章,幸运的是有谷歌翻译:)
如果您尝试在su安装了 GPG 2.x 的系统上将密码解密给其他用户,有时也会出现此错误。 已经针对 RHEL 6 报告了此错误,但没有可用的修复程序;显然这是由于 GPG 2.x 中的一些设计决定。错误报告中建议的一种解决方法是在 tmux 或 screen 会话中运行解密。 更多阅读在这里。