目标:
维护以前的同事系统,我想锁定所有密码登录,以便只允许基于 ssh 密钥的登录。
信息:
CentOS 6.5 系统不提供任何基于网络的身份验证功能(没有 Kerberos、ldap、gssapi 等,
/etc/nsswitch.conf
只知道“文件”)。/etc/passwd
显示我期望的所有非系统用户。
问题:
/etc/shadow
只显示其中的一半。用工作锁定他们的密码passwd -l username
。现在我也想查看其他用户的条目,并且他们的密码也被锁定。
审判:
passwd -l username
为其中一个“失踪”用户做了一个,系统给了我passwd: Success
. 但我仍然在阴影中看不到该用户的条目。有任何想法吗?
我认为您应该能够通过在全局 ssh 配置(通常在 /etc/ssh/sshd_config 中)中设置以下配置参数来禁止所有密码登录并仅允许在系统上进行基于密钥的身份验证:
在配置文件发生任何更改后,您需要重新加载 sshd 服务。
测试更多
操作系统是否不知道密码哈希、到期等数据的明确测试是:
如果操作系统可以通过任何方式(ldap 或其他方式)获取该数据,则输出非空行:
如果我使用文本编辑器从中删除一行
/etc/shadow
,则没有输出。锁定密码
无论是否有阴影线,您建议的密码锁定都可以正常工作。不存在的影子线意味着用户无法使用密码登录。
重新填充阴影
以前的管理员可能通过手动编辑创建了一些用户
/etc/passwd
。它看起来很难看,但这不是错误;操作系统旨在处理这个问题。重新填充影子的一种快速方法是遍历所有 passwd 条目这些命令:这将简单地创建缺少的
/etc/shadow
行login:x::0:::::
。副作用是所有现有/etc/shadow
行都会将“连续密码更改之间的最小天数”重置为零。但这不是一个经常使用的设置,您可能知道是否需要它(公司政策等)。