通过编辑 /etc/password 文件禁用登录

通过编辑 /etc/password 文件禁用登录

我被分配生成一个可以禁用 ssh 服务密码登录的脚本。知道我可以通过编辑 /etc/sshd_config 文件来执行此操作,但我的导师提到我应该查看的文件是 /etc/password 文件。这是对我执行这项任务的提示。这就是我所做的,我删除了用户中的“x”符号。我相信该字段是为哈希密码保留的。

原本的

 pi:x:1000:1000:,,,:/home/pi:/bin/bash

编辑后:

 pi::1000:1000:,,,:/home/pi:/bin/bash

结果:没有密钥,我只能重新输入密码窗口。

为了清楚起见进行了更新:该脚本应该用于回复公钥和私钥,以便登录到 pi 服务器。换句话说,我尝试使用无密码登录,使其成为强化安全性的功能。

答案1

您不需要/etc/passwd直接编辑该文件,但如果您坚持的话也可以这样做。

passwd --lock pi    # Lock the "pi" user account

您可以使用 来查看更多选项,包括如何解锁锁定的帐户man passwd。不用说,这个命令必须以 root 权限运行。


现在我看到您已经编辑了您的问题来解释您想要禁用 ssh 基于密码的身份验证,这可以通过简单的编辑来强制执行/etc/ssh/sshd_config

PasswordAuthentication no

记得重启服务,systemctl restart sshd

答案2

虽然 @roaima 是正确的,但passwd命令或 sshd_config 可能是您想要的,我想指出一些替代方案:

1)在密码的开头添加一个感叹号(实际上是这样passwd -l的,请参见手册页)。请注意,实际的密码哈希值位于/etc/shadow,而不是/etc/passwd

2) 禁用(“预过期”)帐户usermod --expiredate 1(或过去的任何其他日期,也来自 passwd 手册页)

chsh -s /usr/sbin/nologin3) 通过或 编辑将 shell 更改为“/usr/sbin/nologin” /etc/passwd。许多 debian 儿童使用它来识别系统/服务帐户,以阻止针对专用帐户(apache、mail、sshd 等)的注入攻击。

相关内容