在 Solaris 10 中是否有可能将基于密码的身份验证限制给特定用户?
特定用户不应使用密码登录。相反,他应该只能使用密钥登录。我计划根据来自另一个系统的密码和密钥来限制用户通过 SSH 登录,以便特定用户可以使用密码登录,而某一类用户只能使用密钥登录。
答案1
在 Solaris 10 中,只要您在 /etc/nsswitch.conf 中使用密码数据库的“文件”源,就可以通过确保帐户在 /etc/shadow 文件中没有有效密码来阻止用户使用密码登录。由于执行此操作的机制将文字“NP”插入密码字段,因此它被称为“NPing 帐户”。
对特定帐户执行此操作的命令是passwd -N <account>
。始终使用 passwd 命令来实现此目的,而不是直接编辑影子文件。
注意不要锁定帐户(passwd -l
),因为这样也会阻止使用密钥通过 ssh 登录。
如果您稍后决定使用某种形式的双因素身份验证,例如 SecurID 或其他形式的 RADIUS 身份验证(除了 SSH PKI),则可以通过 PAM 实现。在这种情况下,如果与 /etc/passwd 的匹配失败,则输入的密码应传递给下一个提供程序,在本例中就是如此。
答案2
抱歉,我的回答可能不相关,但您的问题对我来说有点不清楚。我会试一试!
从 OpenSSH 5.x 及更高版本开始,您可以匹配某些用户(匹配用户) 和组 (匹配组)在配置文件中。我只需将类似这样的内容添加到我的sshd_配置:
匹配用户 rajkumar
PasswordAuthentication 否
ChallengeResponseAuthentication 否
PubkeyAuthentication 是
您可能使用合适的可插入身份验证模块并在 Solaris 中实现 PAM 来实现相同的结果。
祝你好运!