让我们假设以下情况。我们有一个可以通过 SSH 访问的服务器。有一个用户/etc/passwd
拥有有效的登录 shell(例如/bin/bash
,而不是像这样的无效登录 shell /bin/false
)。
*
此用户的第二个(密码)字段中有一个星号 ( ) /etc/shadow
。如果此用户的文件夹中没有 ssh 密钥,是否有办法让他通过 SSH 登录~/.ssh/
?
*
或者,稍微重新表述一下这个问题:当密码字段中有一个时,许多在线指南建议禁用登录 shell,原因是什么/etc/shadow
?
答案1
*
哈希密码位置中的A/etc/shadow
有效地禁用了所有基于密码的登录,因为没有用户输入会产生哈希值*
。但用户仍然可以使用其 ssh 密钥登录。
*
与感叹号相比!
进行比较不仅是非法的哈希,而且传统上表示A锁定帐户. 便携版 OpenSSH(GNU/Linux 上提供的版本)荣誉 锁定经过!
当不是使用 PAM ( UsePAM no
)。Linux PAM 的pam_unix
模块款待 *
和!
同样的方式。
请注意,不同的类 UNIX 平台可能会使用另一个字符串来锁定帐户。
设置无效 shell 的原因只是为了防止交互式登录会话工作(无论是否设置了帐户密码)并且会阻止sudo su - user
类似工作。