![如何设置 Ubuntu 使用 Yubikey 解锁屏幕保护程序](https://linux22.com/image/1016565/%E5%A6%82%E4%BD%95%E8%AE%BE%E7%BD%AE%20Ubuntu%20%E4%BD%BF%E7%94%A8%20Yubikey%20%E8%A7%A3%E9%94%81%E5%B1%8F%E5%B9%95%E4%BF%9D%E6%8A%A4%E7%A8%8B%E5%BA%8F.png)
当我有此密钥时:
https://support.yubico.com/support/solutions/articles/15000006900-security-key-by-yubico
当我将其拔出并离开计算机时,我想使用它来锁定屏幕,当我回来时,我想通过将 yubikey 插入 USB 插槽来解锁屏幕 - 我想触发验证,确保它确实是我的密钥,而且我不想输入密码。
我正在看这里
https://www.dalemacartney.com/2013/01/14/locking-and-unlocking-the-gnome3-session-with-a-yubikey/
这似乎是一个好的开始,但是在那里使用的脚本中有序列号检查,我想进行公钥/私钥验证而无需额外输入密码。
有ykinfo -q -s
命令可以获取密钥的序列号。是否有 CLI 实用程序可以触发 yubikey 身份验证?
答案1
在 ubuntu 18.04 + Unity7 上我需要添加:
auth sufficient pam_u2f.so
前
@include common-auth
在文件 /etc/pam.d/unity 中
当我插入 ubikey 时,能够通过密码或 yubikey 解锁屏幕 - 这并不是我所期望的。我想插入 ubikey 来查看身份验证查询,然后进行身份验证。此外,身份验证成功后,我需要单击“解锁”按钮,但这似乎没有必要。
第二部分是拔出 yubikey 后锁定屏幕。为了捕获拔出 yubikey 的情况,我需要创建文件 /etc/udev/rules.d/95-yubikey-screen-lock.rules,内容如下:
ACTION=="remove", SUBSYSTEM=="usb", ENV{PRODUCT}=="1050/120/502", RUN+="/tmp/test.sh"
并使用命令让操作系统使用它:
sudo udevadm control --reload
可以通过运行获取 ENV{PRODUCT} 值
sudo udevadm monitor --kernel --property --subsystem-match=usb | grep PRODUCT
并将 yubikey 从 USB 中拔出。
/tmp/test.sh 脚本包含:
su - lmlich -c "gnome-screensaver-command -l"
它将以 root 身份运行,并将以用户 lmlich(即操作系统中的我)的身份运行命令以锁定我发行版中的屏幕。
这样就完成了。
但是,组合起来后,拔出 yubikey 后,锁屏会显示密码挑战。当我输入错误的密码时,我可以使用 yubikey 进行身份验证。
这是一个解决方案,但不是一个好的解决方案。