pass 和 gpg:没有公钥

pass 和 gpg:没有公钥

我正在使用经过相当长一段时间;但将我的密钥存储和 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/FA829B53FA829B53并提交更改。

聚苯乙烯

@Ł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!

相关内容