我花了几个小时尝试在 Debian 12 上正确配置 ssh MFA,使用公钥或在 OTP 代码之前询问的密码。
目前我已经能够配置 publickey+MFA 和 password+MFA,但无法配置 publickey|password+MFA
公钥+MFA
编辑
/etc/pam.d/sshd
- 评论
@include common-auth
auth required pam_google_authenticator.so
在后面添加
- 评论
创建
/etc/ssh/sshd_config.d/mfa.conf
包含以下内容的文件
UsePAM yes
ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive
通过此配置,我可以使用 publickey+MFA 登录,但是当使用密码时,我得到一个Permission denied (publickey)
密码+MFA
编辑
/etc/pam.d/sshd
- 保持
@include common-auth
auth required pam_google_authenticator.so
在后面添加
- 保持
创建
/etc/ssh/sshd_config.d/mfa.conf
包含以下内容的文件
UsePAM yes
ChallengeResponseAuthentication yes
通过此配置,我可以使用密码+MFA 登录,但是使用公钥身份验证时不会要求输入 OTP 代码
我尝试了许多不同的配置并做了大量研究,但我找不到按照我想要的方式配置身份验证。
例如
AuthenticationMethods publickey,keyboard-interactive password,keyboard-interactive
我可以使用 publickey+MFA 正确登录,但是当使用密码时,即使我使用的是正确的密码,也会出现“权限被拒绝”的情况。
我甚至尝试使用自定义 pam 配置文件,如下所示
auth substack pam_unix.so
auth required pam_google_authenticator.so
auth requisite pam_deny.so
auth required pam_permit.so
但我试过的所有方法都不起作用
我不明白为什么配置起来这么困难,因为 sshd 本身就可以处理这个问题,但是当添加 OTP MFA 时,它不能在 sshd basic auth 之后直接插入
如果有人找到实现该配置的方法我会很高兴听到这个消息。
提前致谢