首先禁止 root 用户通过 ssh 直接登录,具体方法是编辑 /etc/ssh/sshd_config 文件,将 permitrootlogin 设置为 no;1. 使用 sudo vim /etc/ssh/sshd_config 打开配置文件;2. 修改 #permitrootlogin yes 为 permitrootlogin no;3. 保存后重启 ssh 服务,使用 sudo systemctl restart sshd;4. 确保已创建普通管理员用户(如 admin),并将其加入 sudo(debian/ubuntu)或 wheel(centos/rhel)组;5. 推荐启用密钥登录、更改默认端口、配置防火墙和部署 fail2ban 以增强安全;6. 验证配置:尝试用 root 登录应被拒绝,说明限制已生效。
在 linux 系统中,为了提高服务器的安全性,通常建议限制 root 用户通过 SSH 直接登录。这样可以防止攻击者直接暴力破解 root 账户密码。以下是限制 root 登录的 SSH 配置方法。
修改 SSH 服务配置文件
SSH 服务的配置文件通常位于
/etc/ssh/sshd_config
。你需要编辑这个文件来禁用 root 登录。
- 使用文本编辑器打开配置文件:
sudo vim /etc/ssh/sshd_config
- 找到以下这一行:
#PermitRootLogin yes
将其修改为:
PermitRootLogin no
说明:PermitRootLogin no:完全禁止 root 用户通过 SSH 登录。其他可选值(了解即可):without-password 或 prohibit-password:允许 root 使用密钥登录,但不允许密码登录。yes:允许 root 密码登录(不推荐)。forced-commands-only:只允许 root 执行预定义命令,通常用于自动化任务。
- 保存并退出编辑器。
重启 SSH 服务
修改配置后,必须重启 SSH 服务才能生效。
sudo systemctl restart sshd
- 对于旧版本的 Ubuntu,可能使用:
sudo systemctl restart ssh
⚠️ 注意:重启前建议确保你有其他管理员账户可以登录,否则可能被锁在系统外。
配置普通用户并提升权限(推荐做法)
禁用 root 登录后,应使用普通用户登录,再通过
sudo
或
su
切换到 root。
- 创建一个普通用户(例如
admin
):
sudo adduser admin
- 将用户加入 sudo 组(Debian/Ubuntu):
sudo usermod -aG sudo admin
或加入 wheel 组(CentOS/RHEL):
sudo usermod -aG wheel admin
- 使用
admin
用户通过 SSH 登录,需要 root 权限时执行:
sudo su -
或直接运行需要权限的命令:
sudo systemctl restart nginx
额外安全建议
- 使用密钥认证:禁用密码登录,仅允许 SSH 密钥登录,更安全。
- 更改默认 SSH 端口:将端口从 22 改为其他端口,减少自动扫描攻击。
- 启用防火墙:使用
ufw
或
firewalld
限制访问 IP。
- 使用 Fail2ban:自动封禁多次尝试登录失败的 IP。
验证配置是否生效
你可以通过另一台机器尝试用 root 登录:
ssh root@your_server_ip
如果返回类似 “Permission denied, please try again.” 或直接拒绝连接,说明配置成功。
基本上就这些。限制 root 登录是一个简单但非常有效的安全措施,强烈建议在生产环境中启用。