root 是所有 Linux 系统的标准用户名,攻击者只需猜出密码,无需猜用户名——暴力破解的难度减半。禁用 root 远程登录、改用普通用户加 sudo 的方式,是提升服务器安全的重要一步。本文完整演示操作流程,并给出验证方法和应急预案。

本文要点

  • 先创建具备 sudo 权限的普通用户
  • 修改 SSH 配置设置 PermitRootLogin no
  • 重启 SSH 服务使配置生效
  • 验证配置并确保新账户可正常使用

第一步:创建普通用户并赋予 sudo 权限

必须先做,再禁用 root

如果没有可用的普通用户就先禁用 root 登录,你将完全无法通过 SSH 管理服务器。请严格按照本文步骤顺序操作。

Debian / Ubuntu

# 替换 yourusername 为你想要的用户名
adduser yourusername
usermod -aG sudo yourusername

CentOS / 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 值含义推荐程度
yesroot 可用密码和密钥登录不推荐
prohibit-passwordroot 只能用密钥登录(禁密码)可接受
noroot 完全不能通过 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。