linux禁止root远程登录需修改/etc/ssh/sshd_config中permitrootlogin为no并重启sshd;确保普通用户(如admin)存在且属sudo/wheel组,可ssh登录并sudo提权;可选加强密钥认证、allowusers限制及端口变更;务必验证登录有效性并保留本地应急访问。

Linux 禁止 root 远程登录是提升系统安全性的基础操作,核心在于修改 SSH 服务配置,确保 root 用户无法通过 SSH 直接登录,同时保留普通用户登录和提权能力。
修改 SSH 配置文件禁止 root 登录
SSH 服务的主配置文件为 /etc/ssh/sshd_config。需将其中控制 root 登录的参数设为 no:
- 找到或添加 PermitRootLogin 行,改为:
PermitRootLogin no - 如该行被注释(以 # 开头),需先取消注释再修改
- 保存文件后必须重启 SSH 服务生效:
sudo systemctl restart sshd(ubuntu/debian)或
sudo systemctl restart sshd(centos/RHEL 7+)
确认普通用户可正常登录并具备 sudo 权限
禁用 root 登录后,必须确保至少一个普通用户能登录并执行管理任务:
- 创建普通用户(如 admin):
sudo adduser admin - 将其加入 sudo 组(Ubuntu/Debian)或 wheel 组(CentOS/RHEL):
sudo usermod -aG sudo admin 或
sudo usermod -aG wheel admin - 测试用该用户 SSH 登录,并运行 sudo whoami 验证提权是否正常
可选:进一步限制登录方式增强安全性
在禁止 root 登录基础上,还可叠加以下措施:
- 关闭密码认证,仅允许密钥登录:
设置 PasswordAuthentication no,并确保用户已配置好 SSH 公钥 - 限制可登录用户范围:
添加 AllowUsers admin deploy(允许多个用户,空格分隔) - 更改默认 SSH 端口(非必需,但可减少自动化扫描):
修改 Port 22 为其他端口号(如 Port 2222),注意同步更新防火墙规则
验证与排错要点
配置完成后务必验证,避免锁死系统:
- 新开终端窗口,用普通用户 SSH 登录,再尝试 ssh root@localhost 或远程地址,应提示“Permission denied”
- 检查 SSH 服务状态:sudo systemctl status sshd,确认无报错且处于 active 状态
- 查看日志排查问题:sudo journalctl -u sshd -n 50 –no-pager
- 若误操作导致无法登录,请通过本地控制台或云平台 VNC 进入系统修正配置