原理
密码本
在命令行世界中,许多认证工具,诸如 git,ssh 本身是无状态的,也就是说没法记住输入的密码,这导致一个巨大的问题,就是运行一些习以为常的命令,每次都要输入密码,固然是安全,但是大多时候严重拖慢了效率。
而 libsecret 就是为了解决这个问题而出现的。
他就是一个集中的密码本,帮助我们去记住密码。
底层 keyring
keyring service 是密码环服务,它是一个在后台运行的 daemon,是真的密码本,负责实际存储,加密与管理密码,token,证书以及密钥。
在 gnome 环境下是 gnome-keyring,在 kde 环境是 kwallet。
实际 libsecret
是一个库,是标准化的 API,充当了应用程序与 keyring 的桥梁。
使用
安装
还是以 arch 为例。
sudo pacman -S gnome-keyring libsecret seahorseseahorse 就是一个管理 gnome-keyring 的前端。
在 shell 中输入 seahorse 就可以用 GUI 来查看管理密码了。
还需要一个 git-credential-libsecret 这个在 git 软件包里面。
如果没有安装 git,那就再安装一下 git。
配置
配置 pam
其实安装了 gnome-keyring 的时候会自动配置。
所以不用管。
位置在 /etc/pam.d/sddm,不过这取决于你是用的是什么登录配置文件,我用的是 sddm。
有下面两条就行:
-auth optional pam_gnome_keyring.so
-session optional pam_gnome_keyring.so auto_start
- 与 optional 意味着即便密钥环解锁失败也可以成功登录。
auto_start 表示自动启动。
配置 wm 会话文件
如果是 sddm 的话,位置是 /usr/share/wayland-sessions/xxx.desktop,我用的 niri 就是 niri.desktop。
我用的 niri,启动的是 niri-session,这个脚本已经设置了自动启动 dbus,所以不用配置。
这里如果配置了,就因为启动了两个 dbus 导致冲突,无法进入 niri 界面了。
有些可能没有 dbus 环境,需要配置一下。
配置 git
git config --global credential.helper /usr/lib/git-core/git-credential-libsecret这就可以了。
当使用 git push 的时候,只用第一次输入密码,之后就不需要输入了。