是否可以将密码保存在我的 kwallet 中,以便根据需要自动解锁密钥?如果是这样,如何实现这一目标?
据我所知,这不能在 kWallet 中完成。使用gpg-agent
代替您可以根据需要自由设置其设置,在安全性和易于访问之间取得平衡。根据您运行的发行版,代理应该可以开箱即用。也许它甚至已经在后台运行了?
我从未使用过KeePass,所以我不知道它的功能。然而,kGPG可能值得关注。它是系统 GnuPG 的 GUI 前端。具体来说,它还允许GPG 的低级别设置,包括 GPG 代理。
GnuPG 设置
在这里您可以配置哪个 gpg 二进制文件以及哪个
configuration file
您可以在此处配置使用这些值是在第一次启动时自动检测的,并且应该已经可以工作。使用GnuPG 代理可以让 GnuPG 的工作更加舒适,因为您不需要为每个操作都输入密码。它会在内存中缓存一段时间,因此任何需要密码的操作都可以立即完成。请注意,如果您让其他人可以访问您的会话,这可能会允许其他人使用您的私钥。
该问题还包含 kmail 标签,因此我也会对此进行详细说明。您可能需要阅读PGP 配置部分和kmail FAQ、GnuPG 部分。如果您已经使用上面的 kGPG 设置了密钥,则不必非常担心所有肥胖警告和页面顶部的步骤。只需了解它们即可。
整合实际上是隐式发生的。kGPG 只是告诉 GnuPG 哪些键要创建、修改、打开和更多操作。它在其界面中列出了系统上的密钥及其信任级别等。但在后台,所有内容都存储在~/.gnupg
GnuPG 格式存储在目录中。(我不确定kGPG是调用GPG还是链接到GPG库,但效果是一样的)
kMail 只是另一种前端。它调用gpg
命令来访问存储在同一目录中的密钥。例如用于签名、加密和解密。
这gpg-agent
是会话范围内的。这意味着,如果您在 kGPG 中解锁私钥,kMail 的私钥也将被解锁,反之亦然。
我刚刚找到了kwalletcli,它为 pinentry 提供了 kwallet 绑定。我的发行版不提供软件包,因此目前我无法尝试。
如果您的发行版也不支持该软件包,您可能需要手动安装该软件包。
Arch wiki再次出现并拯救了世界:
提示:要使用 /usr/bin/pinentry-kwallet,您必须安装 kwalletcli 软件包。
~/.gnupg/gpg-agent.conf:
#pinentry interface with kdewallet
pinentry-program /usr/bin/pinentry-kwallet
Run Code Online (Sandbox Code Playgroud)
如果您不想或无法安装kwalletcli,您可以使用该kwallet-query
命令执行一些脚本编写。您必须了解打开哪个钱包才能获取密码。请参阅man kwallet-query
获取更多信息。
但是,gpg 默认不允许从 STDIN 输入密码,因此您需要为其配置 gpg 。
如果你让 gpg-agent 正常工作,你也可以将它用作ssh-agent。
# setup Keybase where you're storing PGP keys in cloud
https://keybase.io/docs/the_app/install_linux
# Import the public key
keybase pgp export | gpg --import
# Import the private key
keybase pgp export -s | gpg --allow-secret-key-import --import
# show all keys
gpg --list-keys --with-keygrip
gpg --list-secret-keys --with-keygrip
# There should be 3 keys: one main [SC]==PUBKEY_USAGE_SIG&PUBKEY_USAGE_CERT and two subkeys [A]==PUBKEY_USAGE_AUTH && [E]==PUBKEY_USAGE_ENC
# Now you have to edit main one ([SC] ID) of them to "trust" it
gpg --edit-key PUT_[SC]_ID_HERE
key 0
trust
5
y
key 1
trust
5
y
key 2
trust
5
y
quit
echo 'enable-ssh-support' >> ~/.gnupg/gpg-agent.conf
echo 'pinentry-program /usr/bin/pinentry-kwallet' >> ~/.gnupg/gpg-agent.conf
gpg -K --with-keygrip
echo 'PUT_[A]_keygrip_ID_HERE' >> ~/.gnupg/sshcontrol
echo 'export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)' >> ~/.bashrc
echo 'gpgconf --launch gpg-agent' >> ~/.bashrc
# setup git configs & set your favorite editor
echo 'export VISUAL="vim"' >> ~/.bashrc
git config --global commit.gpgsign true
gpg --list-secret-keys --keyid-format=long
git config --global user.signingkey [SC]_sec_id
git config --global user.name "stackexchange"
git config --global user.email copy@paste.com
# reload terminal env & gpg-agent and check everything works
source ~/.bashrc
gpgconf --kill gpg-agent
ssh-add -L
ssh -T git@github.com
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4837 次 |
最近记录: |