![记住某些进程的 gpg 密码](https://linux22.com/image/206916/%E8%AE%B0%E4%BD%8F%E6%9F%90%E4%BA%9B%E8%BF%9B%E7%A8%8B%E7%9A%84%20gpg%20%E5%AF%86%E7%A0%81.png)
我使用 GNU 的密码存储(pass)来保存我的所有密码,包括我的电子邮件密码。我在我的 GPG 密钥上设置了一个密码,然后它会被记住gpg-agent
一个小时。我还有一个 cron 作业,可以定期提取我的电子邮件,并使用pass
.
这意味着 cron 作业仅在我输入密码时才起作用,以便gpg-agent
记住密码。否则 cron 作业将失败。
我希望始终记住这个 cron 作业的密码,但不记住其他进程的密码。有办法这样做吗?
处理此类用例的正确方法是什么?我很想把密码全部删除。
答案1
您无需删除所有密钥的密码。然而,gpg-agent 并没有被设计为对不同的密钥有多种设置。因此,我认为你最好的选择是创建一个与不同的 gpg 密钥关联的额外密码存储,而无需密码,并将其用于你的 cron 作业。
基本上,cronjob_key
在密码存储中创建一个新目录(例如 ),一个gpg --full-generate-key
不带密码短语的新密钥( ),并将该目录设置为 中的路径pass init -p cronjob-key [GPG-ID]
。
您可以对旧密钥应用相同的过程,并具有以下目录结构:
|-- old_key
| |-- .gpg-id
|-- cronjob_key
|-- .gpg-id
现在您可以为每个密码存储生成新密码:pass generate cronjob_key/service2 16
和pass generate old_key/service1 16
:
|-- old_key
| |-- .gpg-id
| `-- service1.gpg
`-- cronjob_key
|-- .gpg-id
`-- service2.gpg -> this one doesn't require passphrase
您需要假设,如果您的计算机受到威胁,那么攻击者将可以使用此“无密码”密钥访问服务。为了方便地实现 cronjobs 的自动化,您必须愿意做出这种权衡。这相当于使用大多数网络服务中可用的 cookie,因此接受它作为可行的替代方案应该不难。