如何在 Linux 上使用 pam_usb(Fork)使用 USB 闪存驱动器而不是密码登录

pam_usb 是一个 PAM 模块,为使用普通 U 盘、SD 卡、MMC 等的 Linux 提供硬件认证。

使用此功能,您无需密码即可登录,只需将 USB 记忆棒或存储卡连接到您的计算机。 在运行需要超级用户的终端命令时,此 USB 身份验证也有效 – 使用时不会提示您输入密码 sudo 例如。

pam_usb 适用于任何支持 PAM 的应用程序,例如登录管理器(GDM、Lightdm 等),以及 su / sudo.

对于身份验证,pam_usb 使用 USB 闪存驱动器/存储卡序列号、型号和供应商,以及可选的一次性键盘 (OTP)。 当 One Time Pads 启用时(默认情况下启用,但您可以禁用它),公共用户垫文件存储在 USB / 存储卡上的一个名为的隐藏文件夹中 .pamusb,而私钥存储在同名的隐藏文件夹中,存储在用户主目录中。

这个工具的原始开发者似乎已经放弃了它,自 2016 年 4 月以来没有收到新的提交,自 2011 年以来没有新的版本。此后在各种存储库中进行了一些改进。 为了继续改进 pam_usb,该工具被分叉,同时也包括了之前在其他存储库中完成的工作 (其中包括诸如 UDisk2 端口之类的改进)。

pam_usb 特点:

  • 无密码(存储卡/USB)身份验证。 只需连接您配置了 pam_usb 的 U 盘/存储卡即可登录
  • 支持U盘、SD卡、MMC等。
  • 设备自动探测。 pam_usb 不需要挂载 U 盘; 它可以使用 UDisk 定位 USB 设备并直接访问其数据
  • 无需重新格式化您的 USB 闪存驱动器
  • USB 序列号、型号和供应商验证
  • 支持一次性密码 (OTP) 身份验证
  • 可用作双因素身份验证,需要 U 盘和密码才能登录您的 Linux 系统
  • 您可以在多台机器上使用相同的存储卡/USB 记忆棒

pam_usb 附带了 3 个工具: pamusb-agent 可用于在设备身份验证或移除时触发操作(例如,如果设备被移除,您可以使用命令锁定屏幕), pamusb-conf 这使得设置 pam_usb 更容易,并且 pamusb-check 它用于在脚本或应用程序中集成 pam_usb 的身份验证引擎。

pam_usb 目前不支持为每个用户添加多个设备。 目前, pamusb-conf 不会为已配置的用户添加设备。 您可以在此处跟踪此问题。

值得注意的是 pam_usb 仅用于登录,不用于解锁 GNOME Keyring 或解密私人文件夹. GNOME Keyring 似乎不支持使用密码以外的任何方式解锁。 因此,即使您在使用 pam_usb 时会自动登录并且连接了配对的 USB 闪存驱动器,GNOME Keyring 解锁对话框仍会显示,要求您输入密码以将其解锁。 例如,使用指纹认证时也会发生同样的情况。

我用 GDM 和 LightDM 试过这个。 在这两种情况下,在登录屏幕上,我都必须单击我的用户名并按 Enter 键登录,无需输入账户密码。

[[Edit]]在下面的评论中,开发人员指出他们正在尝试寻求帮助以对代码进行安全审查。 如果您能提供帮助,请通过 Github 与他们联系。

USB 相关:通过使用 Ventoy(Linux 和 Windows)简单地将 ISO 复制到 USB 来创建可启动的 USB 驱动器

安装和设置 pam_usb (fork)