如何在Linux中禁止root远程登录?

如何在Linux中禁止root远程登录?
最新回答
贫尼想借色

2026-06-03 00:10:06

在Linux中禁止root远程登录可通过修改SSH配置实现,具体步骤如下:

  • 修改SSH配置文件SSH服务的主配置文件为/etc/ssh/sshd_config,需使用文本编辑器(如vi或nano)以管理员权限打开:

    sudo vi /etc/ssh/sshd_config

    找到PermitRootLogin参数行,将其值改为no。若该行被注释(行首有#),需先去掉注释符号再修改。例如:

    PermitRootLogin no

    保存文件并退出编辑器(在vi中按Esc后输入:wq保存退出)。

  • 重启SSH服务修改配置后必须重启SSH服务使更改生效。根据系统发行版选择以下命令:

    现代系统(使用systemd):sudo systemctl restart sshd

    旧版系统(使用SysVinit):sudo service ssh restart

    重启后可通过以下命令确认服务状态:

    sudo systemctl status sshd

    若显示active (running)且无报错,说明服务已正常重启。

  • 验证设置是否生效

    尝试SSH登录测试:从另一台机器使用root账户通过SSH登录目标系统,应收到类似Permission denied (publickey,password)的拒绝信息。

    检查日志文件:根据系统类型查看日志确认错误记录:

    Ubuntu/Debian:sudo tail /var/log/auth.log

    CentOS/RHEL:sudo tail /var/log/secure

    日志中若出现Failed password for root或Denied root等记录,说明配置已生效。

注意事项

  1. 替代登录方案:禁止root远程登录后,需先以普通用户身份登录系统,再通过su -或sudo -i切换至root权限,避免管理不便。
  2. 密钥认证优化:若使用SSH密钥认证,建议同时配置PubkeyAuthentication yes并禁用密码认证(PasswordAuthentication no),进一步降低暴力破解风险。
  3. 防火墙协同配置:结合防火墙规则(如ufw或iptables)限制SSH端口(默认22)的访问范围,仅允许可信IP连接。
  4. 多因素认证增强:对高安全性要求的系统,可启用Google Authenticator等双因素认证工具,即使密码泄露也无法直接登录。

原理说明SSH协议默认允许root用户远程登录,但直接暴露root账户会显著增加被攻击的风险。通过将PermitRootLogin设为no,SSH服务会拒绝所有以root身份发起的登录请求,迫使攻击者先破解普通用户账户,再尝试提权,大幅提高入侵难度。此操作是Linux系统安全加固的基础措施之一,尤其适用于生产环境服务器。