KDE Wallet
KDE Wallet Manager 是一个用于管理 KDE Plasma 系统上密码的工具。使用 KWallet 子系统允许用户保存自己的秘密信息,同时也允许用户访问由所有与 KWallet 集成的应用程序存储的密码。
钱包(在 KDE 的术语中,有时也称为 vault 或 keyring)是一个由用户定义的密码保护的加密卷,用户和/或软件可以在其中存储秘密信息(通常是在用户在应用程序中勾选了“记住账户”时存储的凭据)。这些 vault 可以由用户手动创建和使用,也可以由一些与钱包子系统集成的软件(例如邮件应用程序或游戏)在后台自动创建和使用。Vault 通常在用户登录时使用 PAM 模块(见下文)自动解密。
技巧
- 如果您只需要为使用它的应用程序提供一个钱包,建议使用默认名称(即
kdewallet)并使用与用户相同的密码(用于 PAM)。 - 钱包默认存储为使用
.kwl扩展名的加密文件,位于~/.local/share/kwalletd目录中。
安装
KDE Wallet 通常随 KDE Plasma 桌面环境一起提供。钱包子系统可以使用 kwallet 包手动 安装。
可选地安装 kwalletmanager 包以获得钱包管理工具。这个工具可以用来图形化地创建和管理 KDE 钱包。
配置
登录时自动解锁 KDE Wallet
要实现登录时自动解锁 KDE Wallet,请为 PAM 兼容模块 安装 kwallet-pam。选择的 KWallet 密码必须与当前 用户密码相同。
- kwallet-pam 与 GnuPG 密钥不兼容,KDE 钱包必须使用标准的
blowfish加密。 - 当使用自动登录时,只有当自动登录方法保存了密码,钱包才能被解锁。例如,pam_autologin 可以做到这一点。
- 使用指纹读取器登录时,钱包将无法解锁
- 钱包必须命名为
kdewallet(默认名称)。它不会解锁任何其他钱包。 - 如果使用 KDE,可能会想在 KDE Wallet 设置中禁用“当最后一个应用程序停止使用时关闭”,以防止钱包在每次使用后被关闭(例如,Wi-Fi 密码解锁等)。
- 可能需要先删除默认创建的钱包,从而删除所有存储的条目。
- 如果 kwallet 迁移助手在每次登录后都要求输入密码,请重命名或删除
~/.kde4/share/apps/kwallet文件夹。
配置 PAM
以下行必须存在于其对应的部分下
auth optional pam_kwallet5.so session optional pam_kwallet5.so auto_start
编辑与您情况相符的 PAM 配置
- 对于 SDDM,由于行已存在于
/etc/pam.d/sddm中,因此无需进一步编辑。 - 对于 LightDM,由于行已存在于
/etc/pam.d/lightdm和/etc/pam.d/lightdm-autologin中,因此无需进一步编辑。 - 对于 GDM,请相应地编辑
/etc/pam.d/gdm-password。 - 对于 greetd,请相应地编辑
/etc/pam.d/greetd。 - 对于在 tty 登录时解锁(无显示管理器,或类似 greetd-tuigreet),请相应地编辑
/etc/pam.d/login。您需要指定 force_run 参数。
/etc/pam.d/login
auth optional pam_kwallet5.so session optional pam_kwallet5.so auto_start force_run
/etc/pam.d/greetd
#%PAM-1.0 auth required pam_securetty.so auth requisite pam_nologin.so auth include system-local-login auth optional pam_kwallet5.so account include system-local-login session include system-local-login session optional pam_kwallet5.so auto_start force_run
使用 SDDM 自动登录和 LUKS 加密
当系统使用 dm-crypt 加密时,可以通过解密磁盘的密码短语自动解锁 KDE Wallet。当配置了 SDDM#Autologin 时,钱包仍然可以被自动解锁。编辑 /etc/pam.d/sddm-autologin 以添加 pam_systemd_loadkey(8)。
/etc/pam.d/sddm-autologin
-auth optional pam_systemd_loadkey.so -auth optional pam_gnome_keyring.so -auth optional pam_kwallet5.so -session optional pam_gnome_keyring.so auto_start -session optional pam_kwallet5.so auto_start
然后 编辑 sddm.service,并添加
/etc/systemd/system/sddm.service.d/keyringmode.conf
[Service] KeyringMode=inherit
技巧与提示
使用 KDE 钱包存储 ssh 密钥密码短语
安装 ksshaskpass 包。
将 SSH_ASKPASS 环境变量设置为 ksshaskpass,并将 SSH_ASKPASS_REQUIRE 设置为 prefer(优先使用 askpass 程序而不是 TTY)。要使其在每次登录时自动设置,请创建以下 environment.d(5) 文件
~/.config/environment.d/ssh_askpass.conf
SSH_ASKPASS=/usr/bin/ksshaskpass SSH_ASKPASS_REQUIRE=prefer
重新启动您的会话(即重新登录),以便环境变量生效。
第一次尝试使用 SSH 密钥时,系统会要求输入其密码短语。请务必勾选“记住密码”复选框。下次,密码短语将从 KDE 钱包读取。
使用 KDE 钱包存储 Git 凭据
Git 可以将凭据处理委托给凭据助手。通过使用 ksshaskpass 作为凭据助手,HTTP/HTTPS 和 SMTP 密码可以安全地存储在 KDE 钱包中。
安装 ksshaskpass 包。
通过设置 GIT_ASKPASS 环境变量来配置 Git
~/.config/environment.d/git_askpass.conf
GIT_ASKPASS=/usr/bin/ksshaskpass
请参阅 gitcredentials(7) 以获取替代方案和更多详细信息。
存储 GPG 密钥密码短语
可以使用原生的 KDE 窗口来提示输入 GPG 密钥密码短语并将其保存在 KDE 钱包中。
配置 gpg-agent 以使用 /usr/bin/pinentry-qt。
启用 Secret Service 接口。有两种方法可以做到这一点
- 转到系统设置 > KDE 钱包并启用对 Secret Service 接口使用 KWallet。
- 编辑 KDE 钱包配置文件
~/.config/kwalletrc
[org.freedesktop.secrets] apiEnabled=true
关闭钱包并重新打开它以使这些更改生效。您可以使用 kwalletmanager 或直接向 Qt D-Bus 发送命令来完成此操作。
$ qdbus org.kde.kwalletd6 /modules/kwalletd6 closeAllWallets $ qdbus org.kde.kwalletd6 /modules/kwalletd6 open kdewallet 0 $0
KDE 钱包用于 Chrome 和 Chromium
Chrome/Chromium/Opera 内置了钱包集成。要启用它,请使用 --password-store=kwallet5 或 --password-store=kwallet6 或 --password-store=detect 参数运行 Chromium。要使更改持久化,请参阅 Chromium#Making flags persistent。(设置 CHROMIUM_USER_FLAGS 将不起作用。)
从终端查询密码
您可以手动在您的钱包中添加新条目,并使用 kwallet-query 检索它们,而不是将密码存储在纯文本文件中。
例如,如果您想使用 Podman 登录 Docker Hub 注册表,它支持通过 --password-stdin 标志从 stdin 获取密码,您可以使用以下命令登录
$ kwallet-query -r folder_entry wallet_name -f folder_name | podman login docker.io -u dockerhub_username --password-stdin
这样,您的密码既不会存储在任何文本文件中,也不会存储在终端历史记录文件中。
为了在图形化会话之外运行 kwallet-query(例如作为无人值守备份脚本的一部分),请设置 QT_QPA_PLATFORM=offscreen 环境变量。
$ QT_QPA_PLATFORM=offscreen kwallet-query -r folder_entry wallet_name -f folder_name
在窗口管理器中自动解锁 KWallet
要解锁受登录密码保护的 KWallet,除了配置 PAM 外,还需要在您的窗口管理器配置文件中的 自动启动部分启动 /usr/lib/pam_kwallet_init。
禁用 KWallet
如果您想永久禁用 kwallet
~/.config/kwalletrc
[Wallet] Enabled=false
自动 D-Bus 激活
大多数应用程序使用 org.freedesktop.secrets.service D-Bus 服务。KWallet 默认不为此提供服务文件。
您可以通过创建这样的服务文件来实现自动激活
~/.local/share/dbus-1/services/org.freedesktop.secrets.service
[D-BUS Service] Name=org.freedesktop.secrets Exec=/usr/bin/kwalletd6