root 是所有 Linux 系统的标准用户名,攻击者只需猜出密码,无需猜用户名——暴力破解的难度减半。禁用 root 远程登录、改用普通用户加 sudo 的方式,是提升服务器安全的重要一步。本文完整演示操作流程,并给出验证方法和应急预案。
本文要点
- 先创建具备 sudo 权限的普通用户
- 修改 SSH 配置设置 PermitRootLogin no
- 重启 SSH 服务使配置生效
- 验证配置并确保新账户可正常使用
第一步:创建普通用户并赋予 sudo 权限
必须先做,再禁用 root
如果没有可用的普通用户就先禁用 root 登录,你将完全无法通过 SSH 管理服务器。请严格按照本文步骤顺序操作。
Debian / Ubuntu
# 替换 yourusername 为你想要的用户名
adduser yourusername
usermod -aG sudo yourusernameCentOS / AlmaLinux / Rocky
adduser yourusername
passwd yourusername
# wheel 组等同于 sudo 权限
usermod -aG wheel yourusername验证 sudo 可用(保持 root 连接,另开窗口测试)
su - yourusername
sudo whoami
# 输出应为 root第二步:为新用户配置 SSH 密钥(推荐)
# 在新用户 home 目录创建 .ssh
mkdir -p /home/yourusername/.ssh
chmod 700 /home/yourusername/.ssh
# 将你的公钥粘贴进去(本地执行 cat ~/.ssh/id_ed25519.pub 获取)
nano /home/yourusername/.ssh/authorized_keys
chmod 600 /home/yourusername/.ssh/authorized_keys
chown -R yourusername:yourusername /home/yourusername/.ssh第三步:修改 SSH 配置
nano /etc/ssh/sshd_config找到 PermitRootLogin 一行,修改为:
PermitRootLogin no| PermitRootLogin 值 | 含义 | 推荐程度 |
|---|---|---|
| yes | root 可用密码和密钥登录 | 不推荐 |
| prohibit-password | root 只能用密钥登录(禁密码) | 可接受 |
| no | root 完全不能通过 SSH 登录 | 推荐 |
第四步:重启 SSH 服务
# 先测试配置语法
sshd -t
# 语法无误后重启
systemctl restart ssh # Debian/Ubuntu
systemctl restart sshd # CentOS/RHEL保留当前连接测试新账户
重启 SSH 后,不要关闭当前 root 终端。新开一个窗口用新用户名登录,确认能正常进入并 sudo,再关闭旧连接。
第五步:验证 root 登录已被禁止
# 尝试 root 登录(应失败)
ssh root@你的IP -p 端口
# 预期:Permission denied小结
- 先创建 sudo 用户并测试 → 再禁用 root,顺序不能反
- PermitRootLogin no 是最严格的设置
- 修改 sshd_config 前用 sshd -t 检查语法
- 保留旧连接测试新账户,确认可用后再关闭
- 结合 SSH 密钥登录,安全效果翻倍
常见问题
禁用 root 后如何执行需要 root 权限的命令?
使用 sudo 前缀,例如 sudo systemctl restart nginx。需要长时间 root 环境可执行 sudo -i 或 sudo su -。
不小心先禁了 root,现在连不上怎么办?
用 KiwiVM 紧急控制台以 root 登录,将 sshd_config 里 PermitRootLogin 改回 yes,重启 SSH,再按正确顺序重新操作。
prohibit-password 和 no 有什么区别?
prohibit-password 允许 root 用 SSH 密钥(但不允许密码)登录;no 则完全禁止 root 通过 SSH 登录,更彻底。推荐使用 no。