我正在我们的测试环境中测试一些 CentOS 容器上的 ssh 登录的双因素身份验证。
我从 github 的源代码编译了自己的 rpm,安装并配置了所有内容,并启动并运行了默认设置。首先提示我输入令牌,然后提示我输入用户密码。
我现在想做的是改变这两个因素的顺序。我有一个要求,先要求输入密码,最后要求输入令牌,但我无法配置这一点。
/etc/pam.d/sshd
安装后的样子如下:
#%PAM-1.0
auth required pam_google_authenticator.so nullokt
auth required pam_sepermit.so
auth include password-auth
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session optional pam_keyinit.so force revoke
session include password-auth
我尝试移动第一部分的参数,但没有成功。例如,如果我将 google_authenticator 行移动到第一部分的底部,则只启用密码验证。
编辑:
我读过 PAM 的文档,但无法实现这一点。我尝试将 google-authenticator 与 /etc/pam.d/password-auth 捆绑在一起,但没有任何变化。要么先使用令牌,然后使用密码,要么只使用密码。
答案1
我在 Centos 6.2 上遇到了同样的问题。在我注释掉 pam 文件中的 include 后,它就正常工作了,如下所示。我使用ArchLinux 维基作为参考。
auth required pam_unix.so
auth required pam_env.so
auth required pam_google_authenticator.so
#auth required pam_sepermit.so
#auth include password-auth
...