我使用 FIDO2 密钥登录 KDE 会话,但 KDE 钱包要求输入密码。我正在使用它,发现将密钥、ssh 密码等保存在一个地方非常有用。有没有办法用 FIDO2 密钥解锁?或者可能有适用于 FIDO2 的替代钱包?
答案1
您无法使用 FIDO2 解锁您的 kwallet,因为钱包默认使用您的密码加密。如果您使用 FIDO2 进行无密码登录,则尚未输入您的密码,并且登录时无法解锁 kwallet。
作为参考,GNOME Keyring 也有同样的问题,请参阅:使用 Solokey (Yubiko) 无密码登录后如何解锁 Gnome 密钥环?
当前的密码管理器和密钥环软件(例如 GNOME Keyring、KWallet、KeePass 和 Bitwarden)使用密码来加密其数据库。所以他们不支持无密码解锁。 Bitwarden 即将推出无密码支持,并且可能会在其他产品中提供。还需要一段时间(如果?)GNOME Keyring 和 KWallet 才能实现这一点。
根据我收集的信息(我也有同样的问题),Linux 系统通常使用 PAM 系统来处理登录。许多发行版都设置了 PAM 模块,以便在登录时解锁系统密钥环 - GNOME Keyring ( pam_gnome_keyring
) 和 KWallet ( ) 。pam_kwallet5
对于 KWallet,它是kwalletd5
由 PAM 模块调用用于解锁的守护进程pam_kwallet5
。
这如何解锁 GNOME 密钥环上面的链接提到了一种使用 Yubico 密钥和 PGP 来解锁密钥环的方法。但仅 FIDO2 密钥不支持 PGP/GPG。无法使用仅 FIDO2 密钥来解锁密码加密的密钥环。 FIDO2 不提供密码:它提供了一种验证凭据的方法。
以下内容没有回答OP,但我想说最好的选择是使用一个秘密管理器,该管理器旨在由自动化系统在无人值守的情况下使用。我们可以使用它来存储登录密码,并且(如上面链接的帖子)在登录时启动脚本来解锁 kwallet。当然,这种方法会增加安全风险,因为您需要将机密管理器的凭据存储在某处。然后,有权访问您的会话的人可以检索您的密码。
我想到的两个产品:
- Bitwarden 秘密管理器(我已经有 Bitwarden Premium 计划)
- 通道和年龄免费且简单的解决方案
更新:age
不支持ecdsa-sk
或类型的 SSH 密钥ed25519-sk
。因此,使用passage
FIDO2 SSH 凭据保护密码数据库不是一种选择。
可以使用 FIDO2 密钥,而不是将秘密管理器的凭据存储在磁盘上。该
age
加密工具支持作为接收者加密到 SSH 密钥,并且 OpenSSH 现在支持使用 FIDO2 安全密钥创建 SSH 密钥对。我们可以使用 FIDO2 密钥,而不是passage
在磁盘上存储凭据(我会确保加密 2 个 FIDO2 密钥,否则如果您丢失 FIDO2 密钥,您将无法解锁passage
。)我尚未对此进行测试。
但是我还没有找到如何通过脚本解锁 kwallet。kwalletd5
没有提供任何帮助。我想我可以用 GNOME Keyring 或 KeePassXC 替换 KWallet。