当我尝试使用gpg1导入导出良好的gpg2密钥时,公钥导入工作得很好:
gpg --import /path/to/publickey.gpg
gpg: directory '/home/me/.gnupg' created
gpg: new configuration file '/home/me/.gnupg/dirmngr.conf' created
gpg: new configuration file '/home/me/.gnupg/gpg.conf' created
gpg: keybox '/home/me/.gnupg/pubring.kbx' created
gpg: /home/me/.gnupg/trustdb.gpg: trustdb created
gpg: key ABCDEF1234567890: public key "Me <me@me.com>" imported
gpg: Total number processed: 1
gpg: imported: 1但是导入密钥失败(注意:使用--allow-secret-key-import时的结果相同):
gpg --import /path/to/secretkey.gpg
gpg: key ABCDEF1234567890: "Me <me@me.com>" not changed
gpg: key ABCDEF1234567890/ABCDEF1234567890: error sending to agent: No such file or directory
gpg: error building skey array: No such file or directory
gpg: Total number processed: 1
gpg: unchanged: 1
gpg: secret keys read: 1我在此(关于Ubuntu Z校17.04):
gpg --version
gpg: WARNING: unsafe permissions on homedir '/home/me/.gnupg'
gpg (GnuPG) 2.1.15
libgcrypt 1.7.6-beta
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Home: /home/me/.gnupg
Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cypher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2如果我尝试使用gpg 1.4.21 (在同一台机器上,可以通过sudo apt-get install gnupg1获得它),那么完全相同的导入步骤工作得很好。
发布于 2018-07-02 10:57:45
GnuPG 1.4 + 2.0与2.1和更高版本之间的差异是在这里作了深入的解释。该页的第一部分处理处理秘密密钥的方式的更改。
当您从现有的1.4或2.0实例迁移到GPG的现代分支时,您的secring.gpg文件将导入到新的格式中,不能直接作为密钥环文件使用。这将在您第一次调用GPG 2.1或2.2时自动完成。同时,您的公共密钥环(pubring.gpg)将转换为更新的密钥箱格式(pubring.kbx)。
此转换过程只执行一次,GnuPG通过将隐藏文件写入$GNUPGHOMEDIR (通常是~/.gnupg,但可以通过运行gpgconf --list-dirs来确认)来跟踪这一过程,而line应该是最后一行)。隐藏文件名为.gpg-v21-migrated,如果出于任何原因,您需要重新运行导入过程,那么只需删除该文件并重新启动gpg代理即可。
若要正确地重新加载gpg-代理,请执行以下操作:
bash-4.4$ gpg-connect-agent
> RELOADAGENT
OK
> BYE
OK closing connection
bash-4.4$ 若要正确重新启动gpg-代理,请执行以下操作:
bash-4.4$ gpg-connect-agent
> KILLAGENT
OK closing connection
bash-4.4$ 下一个GPG命令将再次启动它。
至于私钥-v1.d/目录;是的,它确实包含秘密密钥材料,但它是键握格式和加密的,它不能直接以旧secring.gpg文件的方式使用。但是,如果您需要迁移系统或备份密钥或其他任何东西,您仍然可以将秘密密钥导出到该格式。这与以前的命令本质上是相同的(包括导出选项)。
发布于 2019-03-18 18:46:12
我也有过类似的问题。新版本的GPG 似乎失败了在尝试将旧密钥迁移到新格式的情况下,在安装新GPG之前已经将~/..gnupg从备份中恢复下来。对我来说,自动迁移失败了,我的~/..gnupg目录也处于一种状态,除非我先清理,否则进一步的迁移尝试也失败了。
问题的症状如下:
gpg: decryption failed: No secret key。gpg --list-public-keys时,我没有输出,即使我有~/.gnupg/pubring.gpg和~/.gnupg/secring.gpg文件。以下是最后对我起作用的过程:
cd ~/.gnupg
gpgconf --kill gpg-agent
rm -Rf .gpg-v21-migrated private-keys-v1.d tofu.db
gpgconf --kill gpg-agent在此之后,我使用gpg解密了一些东西,这触发了迁移,迁移成功了。
发布于 2017-09-01 18:23:19
https://unix.stackexchange.com/questions/318385/no-such-file-or-directory-when-generating-a-gpg-key提到“没有这样的文件或目录”可以来自缺少的目录~/..gnupg/私有键-v1.d。
gpg选项--调试级别的专家--调试全部--可能会对此有一点帮助。
https://stackoverflow.com/questions/44837437
复制相似问题