在 Linux 系统中,禁止 root 用户直接通过 SSH 远程登录是一项基础且至关重要的安全加固措施。这可以有效防止攻击者通过暴力破解等方式直接获取系统的最高权限。
以下是禁用 root 登录的完整操作步骤和最佳实践。
🛑 禁用 Root 登录操作步骤
- 修改 SSH 配置文件
首先,您需要编辑 SSH 服务的主配置文件 /etc/ssh/sshd_config。
使用您喜欢的编辑器(如 vim 或 nano)打开文件:
sudo vim /etc/ssh/sshd_config
在文件中找到 PermitRootLogin 这一行。它可能被注释掉了(前面有 #),默认值通常是 yes。
将其修改为 no:
PermitRootLogin no
保存并退出编辑器。
- 重启 SSH 服务
修改配置后,需要重启 sshd 服务才能使更改生效。
对于大多数现代 Linux 发行版(如 CentOS 7+, Ubuntu 16.04+),使用 systemctl 命令:
sudo systemctl restart sshd
对于较旧的系统,可能需要使用 service 命令:
sudo service sshd restart
- 验证配置
重要提示: 在执行此步骤前,请确保您不要关闭当前的 SSH 会话窗口。
-
打开一个新的终端窗口。
-
尝试使用 root 用户连接服务器:
ssh root@your_server_ip
- 如果配置成功,连接会被拒绝,并提示 Permission denied。
✅ 最佳实践:创建普通用户并授权
禁用 root 登录后,您需要一个普通用户来管理服务器。
- 创建新用户
在仍保持 root 登录的旧会话窗口中,创建一个新用户(以 newadmin 为例):
创建用户
sudo useradd -m newadmin
为用户设置密码
sudo passwd newadmin
系统会提示您输入并确认新密码。
- 授予 Sudo 权限
为了让新用户能够执行管理员命令,需要将其添加到 sudo 用户组(在 Ubuntu/Debian 上)或直接配置 sudoers 文件(在 CentOS/RHEL 上)。
* Ubuntu/Debian:
sudo usermod -aG sudo newadmin
* CentOS/RHEL:
使用 visudo 命令安全地编辑 /etc/sudoers 文件,添加一行:
newadmin ALL=(ALL) ALL
这允许 newadmin 用户通过 sudo 命令获得临时的 root 权限。
- 测试新用户登录
现在,您可以使用新用户 newadmin 登录服务器。登录后,如需执行特权命令,在命令前加上 sudo 即可。
ssh newadmin@your_server_ip
⚠️ 关键注意事项
* 保留一个活动会话:在修改 SSH 配置期间,务必保留一个已经登录的 root 会话窗口不要关闭。直到您确认新用户可以成功登录并拥有 sudo 权限后,再关闭旧的 root 会话。这是防止因配置错误导致无法远程访问服务器的"后悔药"。
* 防火墙与安全组:如果您同时修改了 SSH 的默认端口(22),请确保服务器的防火墙和云平台的安全组规则已经放行了新的端口,否则同样会导致无法连接。