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 身份验证。