Ubuntu 22.04系统sshd_config中存在两处PermitRootLogin配置的疑问
Ubuntu 22.04系统sshd_config中存在两处PermitRootLogin配置的疑问
嗨,我来帮你把这个问题理清楚~
为什么会出现两处PermitRootLogin配置?
- 开头注释掉的那行
#PermitRootLogin prohibit-password是OpenSSH默认配置文件里的示例默认值,官方的配置文件习惯把默认参数注释起来,方便用户参考默认行为是什么。 - 末尾那行未注释的
PermitRootLogin yes,应该是你(或者之前维护服务器的人)后来手动添加/取消注释的,目的是覆盖默认配置,设置自己需要的规则。
哪个配置才是当前生效的?
sshd加载配置的时候是按从上到下的顺序读取的,后面的配置会直接覆盖前面的同名参数。而且被#注释掉的行根本不会被解析,所以这里只有末尾那行PermitRootLogin yes是当前真正生效的规则。
如果你想确认的话,可以在服务器上运行这个命令查看实际生效的配置:
sshd -T | grep permitrootlogin
输出的结果就是sshd实际使用的PermitRootLogin值。
能不能删除第二处配置?
当然可以!如果你想禁用root的密码登录(或者改成其他规则),可以这么操作:
- 方案一:删掉末尾的
PermitRootLogin yes,然后把开头注释的#PermitRootLogin prohibit-password前面的#去掉,让默认的禁止密码登录规则生效; - 方案二:直接把末尾的
PermitRootLogin yes改成你想要的值(比如PermitRootLogin prohibit-password),开头的注释行留着或者删掉都没关系,毕竟它只是参考用的。
⚠️ 重要提示:修改完配置后,一定要重启sshd服务让新配置生效,命令是:
sudo systemctl restart sshd
另外建议提前开一个备用的SSH连接,避免配置出错导致无法远程登录服务器。
备注:内容来源于stack exchange,提问作者nooboverflow
相关产品推荐
相关产品推荐

