禁用root SSH登录最直接的方法是将/etc/ssh/sshd_config中PermitRootLogin设为no;prohibit-password可保留密钥登录;改root Shell为/sbin/nologin则全面禁止交互式登录。

您正在银河麒麟操作系统上运行SSH服务,但希望阻止root用户通过网络直接登录服务器,以降低被暴力破解或误操作导致系统失控的风险,需调整SSH服务的核心认证策略。
修改sshd_config禁用root SSH登录
该方法通过SSH守护进程层面拦截所有以root身份发起的SSH连接请求,是最直接且广泛应用的基础控制手段。它仅影响SSH、SCP、SFTP等基于SSH协议的远程访问,不影响本地终端或sudo提权操作。
使用具有sudo权限的账户登录系统,执行命令编辑SSH主配置文件:sudo vim /etc/ssh/sshd_config
在文件中搜索PermitRootLogin关键字(可输入/PermitRootLogin后按回车)
若该行被注释(以#开头),先删除#符号;再将值修改为no,确保行内容为:PermitRootLogin no
检查是否存在多个PermitRootLogin配置项,仅保留一行且未被注释——重复配置会导致行为不可预测,systemd可能加载错误的值
保存文件并退出编辑器
重启SSH服务使配置生效:sudo systemctl restart sshd
设置PermitRootLogin为prohibit-password保留密钥通道
该方法在禁用root密码登录的同时,仍允许已正确配置SSH公钥的root用户通过密钥方式登录,适用于需要保留紧急密钥入口但杜绝暴力破解的场景。
方法一:基础配置
编辑/etc/ssh/sshd_config文件
定位PermitRootLogin行,将其值修改为:PermitRootLogin prohibit-password
确认PasswordAuthentication已设为no(防止其他路径绕过)
方法二:增强校验
执行命令验证root用户的~/.ssh/authorized_keys中是否已写入有效公钥:sudo -u root cat /root/.ssh/authorized_keys | head -n1 —— 若输出为空或报错“no such file”,说明密钥未就绪,此时启用prohibit-password将导致root完全无法登录
确保PubkeyAuthentication yes处于启用状态
重启SSH服务:sudo systemctl restart sshd
修改root用户默认Shell为/sbin/nologin
该方法作用于系统级用户数据库,使root账户在任何需要分配交互式Shell的登录场景(如SSH、Telnet、虚拟控制台)均被拒绝,仅返回“This account is currently not available”提示。
第一步:备份原始用户数据库
执行命令:sudo cp /etc/passwd /etc/passwd.bak.$(date +%Y%m%d)
第二步:编辑用户数据库
执行命令:sudo vim /etc/passwd
第三步:定位并修改root行
找到root对应的行(通常为第一行),形如root:x:0:0:root:/root:/bin/bash:/bin/bash,将末尾的/bin/bash改为/sbin/nologin
第四步:验证修改结果
执行命令:getent passwd root,输出中第七字段(Shell字段)必须为/sbin/nologin,否则修改未生效
第五步:重启SSH服务确保新Shell策略被SSH子进程识别:sudo systemctl restart sshd










