应禁用root SSH登录、改root Shell为/sbin/nologin、配置AllowUsers白名单。分别通过修改PermitRootLogin no、/etc/passwd中root行末字段、sshd_config中AllowUsers指定用户实现,三者协同加固,重启sshd生效。

您正在管理一台银河麒麟操作系统服务器,需要立即阻止root用户通过SSH远程登录,防止密码被暴力破解或误操作导致系统失控,这是等保2.0合规与生产环境安全加固的强制要求。
修改sshd_config禁用root SSH登录
该方法直接在SSH守护进程层面拦截所有root身份的连接请求,不依赖PAM或Shell变更,生效快、影响范围明确,且不影响本地终端或sudo提权。
使用具有sudo权限的账户登录系统,执行命令编辑SSH主配置文件:sudo vim /etc/ssh/sshd_config
在文件中输入/PermitRootLogin并回车定位关键词;若该行以#开头,先删除#符号;将值改为no,确保整行形如:PermitRootLogin no
注意:必须检查全文是否仅存在一行未注释的PermitRootLogin配置,重复或多处定义会导致策略失效或服务启动失败。
保存退出后,执行重启命令使配置立即生效:sudo systemctl restart sshd
改root默认Shell为/sbin/nologin
该方法作用于系统级用户数据库,对所有需要分配交互式Shell的登录方式(SSH、Telnet、虚拟控制台)统一拒绝,不依赖SSH服务状态,但su、sudo、cron等非登录场景仍可正常运行root上下文。
执行命令编辑用户数据库:sudo vim /etc/passwd
找到root对应行(通常为第一行),其格式类似:root:x:0:0:root:/root:/bin/bash:/bin/bash
将最后一个字段(即当前shell路径)从/bin/bash改为/sbin/nologin,修改后整行为:root:x:0:0:root:/root:/sbin/nologin
这一步不可逆——一旦保存,任何尝试以root身份启动交互式会话的操作都会收到“This account is currently not available”提示,务必确认已配置好其他管理员账户及sudo权限。
通过AllowUsers白名单限定可登录用户
当您只允许特定普通用户远程登录时,此方法最彻底:它完全屏蔽root及其他未列明账户,连认证环节都不触发,比PermitRootLogin更底层,也更难绕过。
方法一:编辑SSH配置文件:sudo vim /etc/ssh/sshd_config
在文件末尾新增一行:AllowUsers adminuser deployer(将adminuser和deployer替换为您实际允许登录的普通用户名,多个用户用空格分隔)
方法二:若已有AllowUsers行但被注释,取消注释并覆盖原有内容;若已存在AllowUsers但值不包含root,则root自动被排除,无需额外操作。
保存后重启服务:sudo systemctl restart sshd











