ubuntu - gpg2 导入 gpg1 key 失败(gpg 2.1.15,Ubuntu 17.10)

标签 ubuntu gnupg

当我尝试使用 gpg2 导入我良好导出的 gpg1 key 时,公钥导入工作正常:

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

但导入 key 失败(注意:使用--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 Zesty 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 获取它),完全相同的导入步骤工作正常。

最佳答案

GnuPG 1.4 plus 2.0 与 2.1 及更高版本之间的差异是 explained in depth here .该页面的第一部分介绍了 key 处理方式的变化。

当您从 1.4 或 2.0 的现有实例迁移到 GPG 的现代分支时,您的 secring.gpg 文件将导入为新格式,并且不能直接用作 key 环文件。这将在您第一次调用 GPG 2.1 或 2.2 时自动完成。同时,您的公钥环 (pubring.gpg) 将转换为较新的 key 箱格式 (pubring.kbx)。

这个转换过程只执行一次,GnuPG 通过将一个隐藏文件写入 $GNUPGHOMEDIR 来跟踪这个过程(通常是 ~/.gnupg 但可以通过运行 gpgconf 来确认--list-dirs 并且 homedir 应该是最后一行)。隐藏文件名为 .gpg-v21-migrated,如果出于某种原因需要重新运行导入过程,则只需删除该文件并重新启动 gpg-agent 即可。

要正确地重新加载 gpg-agent,请执行以下操作:

bash-4.4$ gpg-connect-agent
> RELOADAGENT
OK
> BYE
OK closing connection
bash-4.4$ 

要正确重启 gpg-agent,请执行以下操作:

bash-4.4$ gpg-connect-agent
> KILLAGENT
OK closing connection
bash-4.4$ 

下一个 GPG 命令将再次启动它。

至于private-keys-v1.d/目录;是的,它确实包含 key Material ,但它是 keygrip 格式并经过加密,不能像旧的 secring.gpg 文件那样直接使用。但是,如果您需要迁移系统或备份 key 或其他任何内容,您仍然可以将 key 导出为该格式。这与之前的命令基本相同(包括导出选项)。

关于ubuntu - gpg2 导入 gpg1 key 失败(gpg 2.1.15,Ubuntu 17.10),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44837437/

相关文章:

java - 将mysql数据导出到ubuntu主目录下的csv文件

python - 使用 python gnupg,我的私钥被作为公钥读入

clojure - lein 在 mac 上安装 datomic 对等库

gnupg - 您如何使用 gpg 验证加密和签名的文件?

linux - 如何使用需要混合使用 sudo 和 sudo -u 用户名权限的命令来制作脚本?

php - 将 netbeans 和 PHP 从 Win 迁移到 Ubuntu - 什么目录结构?

c - 在 ubuntu 中编译 c 程序时出错 "storage size of time_struct isn' t know"

bash - 如何 grep 文件中的非零单词?

git - 如何选择使用哪个 key 来签署 git push?

使用多个 key 加密/解密