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

Kel*_*ays 33 password utilities gpg

我正在尝试安装Pass: the standard Unix password manager,但是,当我尝试向应用程序添加密码时,我收到这些错误

gpg: Kelly's Passwords: skipped: No public key
gpg: [stdin]: encryption failed: No public key
Run Code Online (Sandbox Code Playgroud)

GPG 公钥?

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

/home/khays/.gnupg/pubring.gpg
------------------------------
pub   2048R/64290B2D 2012-11-05
uid                  Kelly Hays <hays.kelly@gmail.com>
sub   2048R/0DF57DA8 2012-11-05
Run Code Online (Sandbox Code Playgroud)

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

zhe*_*ech 37

你是如何创建密码存储的?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
Run Code Online (Sandbox Code Playgroud)

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

  • @ItayB 生成 gpg 密钥的命令实际上是 `gpg --gen-key`(在 gpg 1.4.20 中) (2认同)

Rus*_*ain 6

这是我在 Kubuntu 20.04(带有 KDE 桌面的 Ubuntu Linux v 20.04)上使用的上述信息的汇总passgpg2

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 <yourAddress@email.com>
sub   rsa3072 2022-07-17 [E] [expires: 2024-07-16]
Run Code Online (Sandbox Code Playgroud)

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

gpg --edit-key yourName yourAddress@email.com, trust, 5, save)

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

从现在开始,您可以继续访问以下页面pass:https: //www.passwordstore.org/

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

初始化密码存储:

~$ pass init yourAddress@email.com
Password store initialized for yourAddress@email.com
Run Code Online (Sandbox Code Playgroud)

创建密码存储:

~$ pass insert dev/docker
mkdir: created directory '/home/$USER/.password-store/dev'
Enter password for dev/docker: 
Retype password for dev/docker:
Run Code Online (Sandbox Code Playgroud)

我输入的密码正确吗?-

~$ pass dev/docker
thisIsTheWrongPassword!
Run Code Online (Sandbox Code Playgroud)

删除错误的密码 -

~$ 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'
Run Code Online (Sandbox Code Playgroud)

输入正确的密码

~$ pass insert dev/docker
mkdir: created directory '/home/$USER/.password-store/dev'
Enter password for dev/docker: 
Retype password for dev/docker:
Run Code Online (Sandbox Code Playgroud)

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

~$ pass dev/docker
doNotExposeYourPasswordOnStackExchange!
Run Code Online (Sandbox Code Playgroud)

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

pass dev/docker | login -u myUserName --password-stdin
Run Code Online (Sandbox Code Playgroud)

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


小智 5

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

bash -x $(which pass) insert foo
Run Code Online (Sandbox Code Playgroud)

  • 如果已经用 GPG 1 生成了一个 - 你可以像这样将它导入 GPG 2:`gpg2 --import ~/.gnupg/secring.gpg` (2认同)