![用于密码登录的双因素身份验证,但不用于使用密钥文件登录](https://linux22.com/image/691843/%E7%94%A8%E4%BA%8E%E5%AF%86%E7%A0%81%E7%99%BB%E5%BD%95%E7%9A%84%E5%8F%8C%E5%9B%A0%E7%B4%A0%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%EF%BC%8C%E4%BD%86%E4%B8%8D%E7%94%A8%E4%BA%8E%E4%BD%BF%E7%94%A8%E5%AF%86%E9%92%A5%E6%96%87%E4%BB%B6%E7%99%BB%E5%BD%95.png)
我将 ssh 配置为使用位于的密钥文件~/.ssh
进行登录。现在我想在使用密码时安装双因素身份验证,但在使用密钥文件时不需要。我在这里看到了如何安装双因素身份验证:DigitalOcean:如何使用双因素身份验证保护 SSH。
但它适用于密钥登录和密码登录,我只想将它用于密码登录。
我想要:
- 公钥 -> 确定进入服务器
或者
- 密码 -> 一次性密码 -> 确定进入服务器
AuthenticationMethods
也许有可能对in做些什么sshd_config
?我发现了这一点:OpenSSH 使用(公钥或密码)+google authenticator
答案1
AuthenticationMethods 接受多个选择。AND 操作使用逗号,OR 操作使用空格。因此,上面链接中的示例是:
AuthenticationMethods publickey,keyboard-interactive:pam password,keyboard-interactive:pam
这表示允许密钥和质询-响应,或密码和质询-响应。这将执行您请求的操作。
我强烈建议您使用Match
如下所示的块将密钥身份验证限制到已知主机https://blog.tinned-software.net/restrict-ssh-logins-using-ssh-keys-to-a-particular-ip-address/
答案2
这就是它默认的工作方式。
默认情况下,auth
使用基于密钥的身份验证时,sshd 不会查询 PAM 堆栈。其他堆栈仍将触发(即account
仍将强制执行您的访问策略),但需要额外的配置(自定义AuthenticationMethods
)才能实现 PAM 和非 PAM 身份验证方法混合的情况。