我正在使用经过相当长一段时间;但将我的密钥存储和 gpg 密钥导出到另一台计算机后,我看到以下输出:
$ gpg --list-key
/home/shved/.gnupg/pubring.gpg
------------------------------
pub 2048R/FA829B53 2015-04-28
uid [ultimate] Yury Shvedov (shved) <[email protected]>
sub 2048R/74270D4A 2015-04-28
我的密钥已导入并受信任,但无法使用:
pass insert test
Enter password for test:
Retype password for test:
gpg: 2048R/FA829B53: skipped: No public key
gpg: [stdin]: encryption failed: No public key
fatal: pathspec '/home/shved/.password-store/test.gpg' did not match any files
我该怎么做才能再次使用我的密钥?
答案1
经过使用 gnupg2,它不与 gnupg 1.x 共享密钥环。
使用 gnupg2 而不是 gnupg 再次导入密钥。如果您已经在目标机器上的 gnupg 中拥有密钥,请运行:
$ gpg --export-secret-keys > keyfile
$ gpg2 --import keyfile
导入后,您可能需要更新密钥的信任。Secret key is available.
如果导入成功,您应该会看到一条消息:
$ gpg2 --edit-key FA829B53
[...]
Secret key is available.
sec rsa4096/FA829B53
created: 2015-03-14 expires: 2017-03-13 usage: SC
trust: unknown validity: ultimate
ssb rsa4096/74270D4A
created: 2015-03-14 expires: 2017-03-13 usage: E
[ultimate] (1). Yury Shvedov (shved) <[email protected]>
现在更新您的密钥的信任:
gpg> trust
[...]
Your decision? 5
Do you really want to set this key to ultimate trust? (y/N) y
[...]
gpg> save
答案2
输出线
gpg: 2048R/FA829B53: skipped: No public key
显示错误的pass
初始化。您pass
使用命令进行初始化pass init 2048R/FA829B53
,而您应该使用命令进行初始化pass init FA829B53
。要解决该问题,您应该将文件的内容~/.password-store/.gpg-id
从更改2048R/FA829B53
为FA829B53
并提交更改。
聚苯乙烯
@Łukasz Lis 的所有建议都是正确的,您也应该完成它们。在其他情况下,您将无法解密通行证:
$ pass -c test
会给你一个错误:
gpg: decryption failed: No secret key
答案3
我在创建新存储并使用“2048R/FA829B53”之类的密钥 ID 初始化它时注意到了这一点,我认为这是过去的做法,并且查看旧备份,.gpg_id 是不同的。
然而,现在似乎只使用了 FA829B53,并且在当前的手册页中作者使用了他的电子邮件地址。
我会检查 gpg_id 文件,对于我来说,在一家新商店中,它只是 FA829B53,没有其他行
答案4
在某些情况下,这是您要加密的文件的访问权限问题。
特别是当您导入了公钥并且它是可见的时,当您
gpg --list-keys
sudo
在 Kali Linux 上这种情况没有帮助。你需要成为root!