最稳妥的做法是禁用 root 远程登录并配置替代管理员账户。需先创建带 sudo 权限的普通用户、验证提权成功,再备份并修改 sshd_config 中 PermitRootLogin 为 no,重启服务;推荐同步关闭密码登录、启用密钥认证、设置 AllowUsers 白名单,并严格验证权限与连通性。

最稳妥的做法是修改 SSH 服务配置,让 PermitRootLogin no 生效,从协议层彻底拒绝 root 的远程登录请求。这不是可选项,而是生产环境必须落实的基础动作。
创建并验证替代管理员账户
禁用 root 登录前,必须确保有可用的、具备完整管理能力的普通用户。否则服务器将彻底失联。
- 新建用户:例如
sudo adduser admin(交互式设密码)或sudo useradd -m -s /bin/bash deploy(非交互) - 赋予 sudo 权限:
sudo usermod -aG sudo admin(Ubuntu/Debian)或sudo usermod -aG wheel deploy(CentOS/RHEL) - 测试提权:用新用户 SSH 登录后执行
sudo whoami,应返回root - 务必在本地终端或云平台 VNC 中完成验证,避免仅依赖当前 SSH 会话
修改 SSH 配置并重启服务
核心操作只有一行,但细节决定成败。
- 先备份原配置:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak - 编辑配置文件:
sudo vim /etc/ssh/sshd_config - 搜索
PermitRootLogin,删掉开头的#取消注释,并确保唯一未注释行为:PermitRootLogin no - 检查是否有重复项,删除或注释其他
PermitRootLogin行 - 重启服务:
sudo systemctl restart ssh(Ubuntu/Debian)或sudo systemctl restart sshd(CentOS/RHEL)
增强登录安全(推荐组合)
单禁 root 不够,攻击者仍可能爆破普通用户密码。建议同步收紧认证方式和访问范围。
- 关闭密码登录,强制使用密钥:
PasswordAuthentication no和PubkeyAuthentication yes - 部署公钥前确认目标用户已生成密钥对,并运行
ssh-copy-id -i ~/.ssh/id_rsa.pub admin@server - 设置白名单限制可登录用户:
AllowUsers admin deploy(多个用户名空格分隔) - 确保
~/.ssh/authorized_keys权限为600,家目录不可被组或其他人写入
验证与应急要点
配置改完不验证,等于没做;验证不闭环,等于埋雷。
- 保持当前 root 会话不关闭,新开终端执行:
ssh root@localhost,应立即返回Permission denied - 检查服务状态:
sudo systemctl status sshd,确认 active (running) 且无 failed 提示 - 云服务器还需同步更新安全组规则,放行对应端口(如 2222),并确保客户端连接时指定端口
- 若连不上,优先排查:配置文件语法错误(可用
sshd -t检查)、防火墙拦截、AllowUsers 写错用户名、密钥未正确部署


















