需要 yubikey AND(公钥或密码)进行 SSHD 身份验证

需要 yubikey AND(公钥或密码)进行 SSHD 身份验证

我正在尝试在基于 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/sshdyubico-auth 是通过使用相同接口(password或)在同一文件()中定义的相同机制(PAM)执行的keyboard-interactive,唯一的区别是后者能够通过质询响应处理多个用户输入。

例如,publickey,keyboard-interactive结果为 publickey + yubikey + 密码,结果为 yubikey + 密码 + yubikey + 密码 - 但由于单一输入限制password,keyboard-interactive而无法满足。password禁用common-authinpam.d/sshd将满足第一个组合,但使第二个组合变得不可能。

这个问题的关键似乎是 OpenSSH 无法AuthenticationMethods将 PAM 要求彼此分开,并且 PAM 无法理解 SSH 公钥身份验证(这将允许在 PAM 中定义“公钥或密码”条件,并且只是在 sshd 中单独使用keyboard-interactive)。

是否有另一种方法可以使用 OpenSSH 和 pam_yubico.so 来实现此目的?

或者,如果可以从内部区分password模式,则可以分别用于排除或。keyboard-interactivepam.d/sshdpam_succeed_if.sopam_yubico.socommon-auth

相关内容