我正在运行 i3 窗口管理器,并在我的系统上进行两步身份验证。看来 i3 和 i3lock 不支持 2 因素身份验证的附加提示,而只是通过管道传输我输入的密码作为验证码。
这显然不起作用,除了修改我的 pam 配置并禁用 2 因素身份验证(对于 i3lock)之外,是否有更好的方法可以让我也为 i3lock 利用 2 因素身份验证?
答案1
i3lock 支持 PAM,这意味着它支持 2FA,尽管它可能不支持用户输入的视觉提示。大多数 Yubico 产品提供不同类型的 2FA。看这里例如。
登录时最常见的 2FA 方法是 U2F 和质询响应 (OTP)。 i3lock 两者都可以使用。
不同的 2FA 方法需要用户在登录时执行不同的步骤:
- U2F要求用户在USB闪烁提示后按下USB上的物理按键。
- 质询-响应 (OTP) 只需将 Yubikey 插入计算机即可。 (这就是 Windows 和 Mac 上默认登录 2FA 的工作原理)
为 i3lock 设置 Yubikey U2F
- 构建您的 pam 模块(例如
pam_u2f.so
)并将其放置在正确的位置(例如/lib/security
)。如果您有 yubikey,请按照尤比科的指南。 /etc/pam.d/i3lock
如果尚不存在则创建。这是默认文件,只需要密码。
#
# PAM configuration file for the i3lock screen locker. By default, it includes
# the 'login' configuration file (see /etc/pam.d/login)
#
auth include login
现在,您可以使用以下选项来使用 Yubikey 进行身份验证,尽管第一个选项(密码后备)只是单因素身份验证。
选项 1:带密码回退功能的 Yubikey
添加以下行前线auth include login
。
auth sufficient pam_u2f.so nouserok cue
如果你按回车键,这将解锁你的计算机,这会触发 i3lock 中的 PAM 身份验证(提示将挂在“验证”上),然后按 Yubikey,它应该会闪烁。
您还可以在 yubikey 未插入的情况下,通过输入正确的密码来解锁计算机。如果已插入,模块将等待 yubikey 失败,这将要求您拔出它,或者等待它超时(访问计算机的无聊方式!)。
选项 2:需要 Yubikey 和密码
添加以下行后线auth include login
。
auth required pam_u2f.so nouserok cue
如果您输入正确的密码,按回车键,然后按 Yubikey(它应该闪烁)以提供所需的第二个因素,这将解锁您的计算机。
为 i3lock 设置 Yubikey 质询-响应
- 构建 pam 模块。看尤比科的指南步骤 2 和 4。
/etc/pam.d/i3lock
如果尚不存在则创建。 (参见 U2F 的步骤 2)
选项 1:带密码回退功能的 Yubikey
添加以下行前线auth include login
。
auth sufficient pam_yubico.so mode=challenge-response
当用户在锁定屏幕上按 Enter 键时,这会触发 PAM,并且如果插入 Yubikey,计算机就会解锁。
与 U2F 的选项 1 类似,您也可以在未插入 yubikey 的情况下通过输入正确的密码来解锁计算机。
选项 2:需要 Yubikey 和密码
添加以下行后线auth include login
。
auth required pam_yubico.so mode=challenge-response
这需要插入 yubikey 和正确的密码。
调试
如果您被锁定,请在虚拟终端 (TTY) 上登录。您可以使用ctrl+ alt+组合键找到其中之一f2。然后,您可以使用 杀死 i3lockkillall i3lock
或通过查看 的输出来查找有关问题所在的更多信息journalctl -x
。