我正在尝试在基于 Debian 的系统上配置 OpenSSH总是需要一个尤比凯·托普和任何一个A公钥或者密码。
我意识到通过 可以实现其他组合AuthenticationMethods
,但使用该方法似乎无法实现这种组合。
如果 password
是独立于 PAM,sshd_config
看起来像这样:
UsePAM yes
ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive password,keyboard-interactive
/etc/pam.d/sshd
必须包含 Yubico PAM,以便 SSHD 使用它:
auth required pam_yubico.so id=foo key=bar
上面的示例将无法实现所需的组合,因为密码验证和pam.d/sshd
yubico-auth 是通过使用相同接口(password
或)在同一文件()中定义的相同机制(PAM)执行的keyboard-interactive
,唯一的区别是后者能够通过质询响应处理多个用户输入。
例如,publickey,keyboard-interactive
结果为 publickey + yubikey + 密码,结果为 yubikey + 密码 + yubikey + 密码 - 但由于单一输入限制password,keyboard-interactive
而无法满足。password
禁用common-auth
inpam.d/sshd
将满足第一个组合,但使第二个组合变得不可能。
这个问题的关键似乎是 OpenSSH 无法AuthenticationMethods
将 PAM 要求彼此分开,并且 PAM 无法理解 SSH 公钥身份验证(这将允许在 PAM 中定义“公钥或密码”条件,并且只是在 sshd 中单独使用keyboard-interactive
)。
是否有另一种方法可以使用 OpenSSH 和 pam_yubico.so 来实现此目的?
或者,如果可以从内部区分password
模式,则可以分别用于排除或。keyboard-interactive
pam.d/sshd
pam_succeed_if.so
pam_yubico.so
common-auth