我在其他地方读过其他人的文章,要求SSH被“修复”,以使锁定的帐户无法通过SSH登录。(请参阅Debian错误219377)该请求被拒绝为补丁程序,“因为它破坏了用户的期望,这些用户过去习惯于仅使用passwd来口令-l。” (请参阅Debian错误389183),例如,某些人希望能够通过密码登录锁定帐户,但仍允许SSH密钥访问。
PAM不会拒绝对刚刚被锁定的帐户的SSH密钥身份验证(例如,由于无效的密码尝试,因为SSH密钥身份验证的目的是不关注通常用于锁定帐户的密码字段)。
我知道密码哈希条目是在pam_authenicate()时间而不是在pam_acct_mgmt()时间隐式检查的。pam_unix.so pam_sm_acct_mgmt()根本不检查密码哈希,并且在公用密钥身份验证期间不调用pam_authenticate()。
如果您希望能够集中禁用帐户登录,则还有其他可能的解决方法,包括:
更改登录外壳。
(重新)移动其authorized_keys文件。
拒绝访问的另一种选择是在sshd_config中使用DenyGroups或AllowGroups。(然后将用户添加到“ sshdeny”组,或将其从“ sshlogin”组中删除以禁止他们登录。)(请参阅:https ://help.ubuntu.com/8.04/serverguide/user-management .html)
从http://web.archiveorange.com/archive/v/67CtqEoe5MhDqkDmUMuL中
我读到:“问题是pam_unix仅检查影子条目的到期日期,而不是密码哈希字段的内容。” 如果是这样,您需要做的是使帐户过期而不是锁定帐户吗?
您问题的答案可能是“是的,如果要在密码字段以外的其他地方禁用它们”
account optional pam_echo.so file=/etc/redhat-release
到/etc/pam.d/sshd会导致在使用基于密钥的身份验证登录(尝试)时打印文件内容。