![在 Debian 10 上启用 2FA,但仅适用于密码(没有 2FA 的 pubkey)](https://linux22.com/image/196206/%E5%9C%A8%20Debian%2010%20%E4%B8%8A%E5%90%AF%E7%94%A8%202FA%EF%BC%8C%E4%BD%86%E4%BB%85%E9%80%82%E7%94%A8%E4%BA%8E%E5%AF%86%E7%A0%81%EF%BC%88%E6%B2%A1%E6%9C%89%202FA%20%E7%9A%84%20pubkey%EF%BC%89.png)
99% 的时间我都使用 pubkey 身份验证从我自己的一台机器上管理我的私人服务器。但是,我启用了密码身份验证(针对我的用户,而不是 root),以应对极少数情况下我需要从另一台计算机访问它的情况,这种情况已经发生了。
为了提高系统的安全性,我想启用 2FA,但仅限密码登录。我非常欣赏使用 pubkey 身份验证在没有任何提示的情况下登录的便利性,并且宁愿不使用 2FA,也不愿每次都使用它(我从事机密项目,并且在一个典型的工作日中我已经执行了十几个或更多的 2FA 身份验证) )。
我找到的所有设置 2FA 的指南都假设您希望在所有身份验证方法中启用 2FA。
我是否可以 - 如果可以,如何 - 仅为密码身份验证启用 2FA,而不为 pubkey 启用 2FA?
如果这不起作用,我的解决方法是禁用常规用户的密码身份验证,并设置启用了 2FA 的维护用户。但我更喜欢更干净的设置。
答案1
这是猜测,因此肯定需要进行一些调整,但您描述的行为绝对是可能的。
您可以使用以下内容设置 PAM 身份验证配置:
auth sufficient pam_ssh_user_auth.so
auth required password-auth
auth required pam_2fa.so
该配置文件是按顺序读取的。第一行表示,“如果 ssh 身份验证有效,就足够了。”退出成功。假设您启用了 ssh 公钥身份验证,这将导致成功的身份验证退出。接下来的两行仅在我们尚未使用公钥时运行。我们只需包含适当的密码身份验证和 2fa 身份验证。