最可靠方法是将/etc/ssh/sshd_config中permitrootlogin设为no并重启ssh服务;须先创建并验证具备sudo权限的普通管理员用户,再可选禁用密码登录、启用密钥认证及allowusers白名单。

最可靠、最常用的方法是修改 SSH 服务配置,将 /etc/ssh/sshd_config 中的 PermitRootLogin 设为 no,并确保有可用的普通管理员用户。其他方式(如改 shell、锁密码)不能替代这一步,也不能单独依赖它们来实现远程登录层面的禁止。
核心操作:改 PermitRootLogin 并重启服务
这是唯一能从协议层彻底阻断 root 远程 SSH、SCP、SFTP 登录的手段:
- 用具有 sudo 权限的普通用户登录服务器,执行:
sudo vim /etc/ssh/sshd_config - 搜索
PermitRootLogin,删掉行首的#(如果被注释),改为:PermitRootLogin no - 确认文件中只有一行未注释的
PermitRootLogin,且值为no - 保存后重启服务:
Ubuntu/Debian:sudo systemctl restart ssh
CentOS/RHEL:sudo systemctl restart sshd
必须提前准备:创建并验证普通管理员用户
禁用 root 后,系统只剩普通用户这一条远程入口。跳过这步极易导致失联:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 新建用户(例如
admin):sudo adduser admin(交互式设密码)或sudo useradd -m -s /bin/bash admin(非交互) - 赋予 sudo 权限:
Ubuntu/Debian:sudo usermod -aG sudo admin
CentOS/RHEL:sudo usermod -aG wheel admin - 测试是否能登录并提权:
ssh admin@your-server→ 进入后执行sudo whoami,应输出root - 建议同时配置好 SSH 密钥认证,避免仅依赖密码
加固组合:关闭密码登录 + 白名单用户
单禁 root 不够,攻击者仍可能爆破普通用户密码。生产环境推荐叠加以下两项:
- 在
sshd_config中设置:PasswordAuthentication noPubkeyAuthentication yes
再用ssh-copy-id -i ~/.ssh/id_rsa.pub admin@server部署密钥 - 添加白名单限制可登录用户:
AllowUsers admin deploy(多个用户名空格分隔)
写错一个字母就会拒绝所有连接,务必核对准确 - 改完记得再次重启 sshd 服务
不推荐单独使用的替代方法
这些操作无法替代 PermitRootLogin no,有的甚至无效或带来副作用:
-
sudo passwd -l root:只锁密码,不影响密钥登录;且对 SSH 协议层无约束 -
sudo usermod -s /sbin/nologin root:会阻止所有交互式登录(包括本地终端),影响运维应急 -
PermitRootLogin prohibit-password:仍允许 root 密钥登录,存在密钥失效即失联风险,不建议用于生产 - 改
/etc/securetty或 PAM 模块:作用范围超出 SSH,维护复杂,且不解决根本问题










