我被分配生成一个可以禁用 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/nologin
3) 通过或 编辑将 shell 更改为“/usr/sbin/nologin” /etc/passwd
。许多 debian 儿童使用它来识别系统/服务帐户,以阻止针对专用帐户(apache、mail、sshd 等)的注入攻击。