我尝试将密码添加到“pass”密码管理器中。但我的尝试因“无公钥”GPG 错误而失败。为什么?

我尝试将密码添加到“pass”密码管理器中。但我的尝试因“无公钥”GPG 错误而失败。为什么?

我正在尝试安装Pass:标准 Unix 密码管理器但是,当我尝试向应用程序添加密码时,我收到这些错误

gpg: Kelly's Passwords: skipped: No public key
gpg: [stdin]: encryption failed: No public key

GPG 公钥?

当我输入命令时,gpg --list-keys我得到:

/home/khays/.gnupg/pubring.gpg
------------------------------
pub   2048R/64290B2D 2012-11-05
uid                  Kelly Hays <[email protected]>
sub   2048R/0DF57DA8 2012-11-05

我有点不知道如何解决这个问题,有什么想法吗?

答案1

您是如何创建密码存储的??pass init "Kelly's Passwords"如果是这样,那么这是错误的,您应该致电pass init 64290B2D

如果那么pass insert foo会失败:

gpg: fooo: skipped: public key not found
gpg: [stdin]: encryption failed: public key not found

那么你必须首先信任你自己的密钥( gpg --edit-key 64290B2D, trust, 5, save)。

答案2

在相同的迹象下,如果有人偶然发现这个问题,解决方案可能会有所不同。您pass正在使用gpg2而不是gpg,您可能已经用来生成/管理您的密钥(或者反之亦然)。验证:

bash -x $(which pass) insert foo

答案3

这是一个卷起以上信息是我在 Kubuntu 20.04(带有 KDE 桌面的 Ubuntu Linux v 20.04)上pass使用的gpg2

pass是 Linux CLI 密码管理器。

高层视图: pass要求您有公钥gpggpg是一个Linux CLI 加密程序。有几个版本。 Kubuntu 20.04 使用gpg2但只是将其称为“gpg”。

您首先必须创建一个gpg密钥。然后将 key-idpass作为参数传递给。之后它应该工作。

生成密钥:

~$ gpg --gen-key

看看你闪亮的新钥匙:

~$ gpg --list-keys

pub   rsa3072 2022-07-17 [SC] [expires: 2024-07-16]
      YourKey (a bunch of letters and numbers)
uid           [trust-level] yourName <[email protected]>
sub   rsa3072 2022-07-17 [E] [expires: 2024-07-16]

您必须告诉您的机器信任您的新密钥:

gpg --edit-key yourName [email protected], trust, 5, save)

(这一步实际上对我来说并不是必要的,因为信任被自动设置为[最终] - 但执行这一步并没有伤害我。)

从现在起,您可以继续浏览pass以下页面: https://www.passwordstore.org/

------ 这就是我在名为“dev”的文件夹中为 docker 设置密码的样子 -------------------

初始化密码存储:

~$ pass init [email protected]
Password store initialized for [email protected]

创建密码存储:

~$ pass insert dev/docker
mkdir: created directory '/home/$USER/.password-store/dev'
Enter password for dev/docker: 
Retype password for dev/docker:

我输入的密码正确吗? -

~$ pass dev/docker
thisIsTheWrongPassword!

删除错误的密码 -

~$ pass rm dev/docker
Are you sure you would like to delete dev/docker? [y/N] y
removed '/home/$USER/.password-store/dev/docker.gpg'

输入正确的密码

~$ pass insert dev/docker
mkdir: created directory '/home/$USER/.password-store/dev'
Enter password for dev/docker: 
Retype password for dev/docker:

第二次检查密码是否正确-

~$ pass dev/docker
doNotExposeYourPasswordOnStackExchange!

我可以使用 pass 通过 CLI 登录 Docker Hub

pass dev/docker | login -u myUserName --password-stdin

这会将密码直接通过管道传输到 Docker Hub,而无需将其打印到屏幕上。

答案4

请记住pass init <gpg-id>用于初始化新密码存储并使用 gpg-id 进行加密。您仅为第一次仅有的。

pass add <folder/file> 用于在上述密码存储中添加新密码。

$ pass init tsabunkar (storage-manager should be done first time only)
$ pass add personal/gmail (adding my gmail creds)

现在,如果您想添加另一个凭据,而不是:

$ pass add personal/linux

现在您再次想要添加另一个凭据,但这次您使用了init命令而不是add

$ pass init personal/aws/root

但后来你意识到这个选项应该是add

$ pass add personal/aws/root

错误信息:

Enter password for personal/aws/root: 
Retype password for personal/aws/root: 
gpg: personal/aws/root: skipped: No public key
gpg: [stdin]: encryption failed: No public key
Password encryption aborted.

我想现在你明白这是因为你引用了错误的密码存储本来应该是察本卡但不是个人/aws/根 因此,重新引用正确的密码存储可以解决此问题:

$ pass init tsabunkar
$ pass add personal/aws/root

相关内容