安全

如何安全地禁用 SSH 的 root 登录

禁用 SSH 的 root 登录,挡住那些对着 root@ 试密码的机器人。先建 sudo 用户、设 PermitRootLogin no,并从手机做——不会把自己锁在外面。

CC Chen Chen· 创始人·2026 年 6 月 11 日·阅读 5 分钟

为什么要禁用 SSH 的 root 登录?

root 是每个攻击者都已经知道的那个用户名。扫互联网的机器人不猜你的用户名——它们对着 root 一个密码一个密码地试。如果你禁用 root 的 SSH 登录,这整类攻击就失效了,攻击者现在得同时猜对用户名和认证方式。你改用普通用户登录,需要 root 时用 sudo。这是性价比最高、最省力的 SSH 加固之一。

第 1 步——先确保你有一个 sudo 用户

在你有别的方式能进去之前,别禁 root,否则会把自己锁在外面。建一个有 sudo 权限的普通用户:

# 以 root 身份,建用户并给 sudo
adduser alice
usermod -aG sudo alice   # Debian/Ubuntu
# (RHEL/Fedora:usermod -aG wheel alice)

然后在另一个会话里,确认你能用这个用户登录、并能跑 sudo -v。确认可用之后再继续。

第 2 步——给这个用户配密钥(推荐)

顺手给新用户设置密钥认证——它才是真正的安全收益,比单纯禁 root 更大。把你的公钥加到 /home/alice/.ssh/authorized_keys(TermAI 这类移动客户端能替你部署)。见 SSH 密钥 vs 密码

第 3 步——禁用 root 登录

/etc/ssh/sshd_config 里设:

PermitRootLogin no

然后重启 SSH:sudo systemctl restart ssh。保持当前会话开着,在新连接里确认你仍能用你的用户登录——而 ssh root@host 现在被拒。

以普通用户(非 root)登录的 SSH 会话
用普通用户登录、用 sudo。设了 PermitRootLogin no 后,直接 root SSH 被拒——那些锤 root@ 的机器人也就无功而返。

从手机做

这些都能在移动 SSH 客户端里完成:用 SFTP 或 nano 编辑 sshd_config、在终端里跑建用户/sudo 命令、把保存的连接用户名从 root 改成你的新用户。如果不确定你这个发行版的确切 usermod 组,问 TermAI 助手——它从会话里就知道你是 Debian 还是 RHEL,给出对的命令。

TermAI 建议一条用户管理命令,带 Run 按钮
问'加一个 sudo 用户',得到针对这个发行版的对命令——贴着你连上的服务器——复核后再运行。

加固清单的其余部分

禁 root 和其它基本功天然配套,按影响力排序:

  1. 密钥 + PasswordAuthentication no——最大的收益(密钥 vs 密码)。
  2. 禁用 root 登录——本文。
  3. fail2ban——自动封反复试探者。
  4. 放 Tailscale/WireGuard 后面——干脆不把 SSH 公开暴露。
  5. 可选改端口——为了日志清净(该改 SSH 端口吗?)。

常见问题

怎么禁用 SSH 的 root 登录?
/etc/ssh/sshd_configPermitRootLogin no 并重启 SSH——前提是先建好一个你能登录的 sudo 用户。

会把自己锁在外面吗?
只有跳过 sudo 用户那步才会。禁 root 前,先在另一个会话里建并测试一个有 sudo 的普通用户。

该禁 root 同时也用密钥吗?
该——两者互补。密钥挡住密码攻击;禁 root 拿掉那个人人都盯着的用户名。

快速事实

  • 为什么:root 是通用的暴破目标;禁掉它就挡住这类攻击
  • 怎么做:建 sudo 用户 → 测它 → PermitRootLogin no → 重启 SSH
  • 别锁自己:先在另一个会话确认 sudo 用户能用
  • 配套:密钥认证 + PasswordAuthentication no
Try TermAI

Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.

CC
Chen Chen — Founder of TermAI

Writes about mobile DevOps, terminal UX, and the surprising depth of "boring" infrastructure.

Was this useful? ← Back to blog