**PermitRootLogin** 是 SSH 服务sshd)配置文件 /etc/ssh/sshd_config 中的一个参数,用于控制是否允许通过 SSH 直接以 root 用户身份 登录到服务器。这个设置是为了增强系统的安全性,特别是在远程访问和管理服务器时。

1. PermitRootLogin 参数

PermitRootLogin 主要控制 root 用户是否可以通过 SSH 登录到服务器。由于 root 用户具有系统的最高权限,直接允许 root 用户通过 SSH 登录存在较大的安全隐患,因此这个参数通常建议配置为禁用。

参数值:

  • yes:允许 root 用户通过 SSH 登录。
    • 默认设置为 yes,表示没有限制,root 用户可以使用密码或密钥等方式通过 SSH 登录。
  • no:禁止 root 用户通过 SSH 登录。
    • 强烈推荐在生产环境中使用此设置,以防止暴力破解攻击直接攻击 root 用户。
  • without-password 或 prohibit-password:只允许通过密钥认证(例如公钥认证)来登录 root 用户,禁止使用密码方式登录。
    • without-password 和 prohibit-password 两者的含义基本相同,without-password 是较旧的选项,prohibit-password 是更现代的命名方式。两者的效果是一样的,允许 root 用户使用公钥或其他非密码认证方式登录,但禁止使用密码。
  • forced-commands-only:允许 root 用户通过 SSH 登录,但只能执行特定的命令,通常用于自动化脚本中。
    • 例如,使用 SSH 密钥进行认证,但只允许 root 执行某些指定的命令,禁止交互式登录。

示例配置:

  1. 允许 root 用户通过 SSH 登录PermitRootLogin yes
  2. 禁止 root 用户通过 SSH 登录PermitRootLogin no
  3. 只允许通过 SSH 密钥登录 root 用户PermitRootLogin without-password # 或 PermitRootLogin prohibit-password
  4. 允许 root 用户通过 SSH 登录,但只允许执行指定命令PermitRootLogin forced-commands-only

2. 安全建议

在生产环境中,特别是服务器暴露在公网上时,强烈建议禁用 root 用户 的直接 SSH 登录,防止恶意攻击者通过暴力破解密码或其他方式获取 root 权限。为了增强 SSH 的安全性,可以考虑以下配置:

  • 禁用 root 用户的直接 SSH 登录PermitRootLogin no
  • 使用普通用户登录后,再通过 sudo 提升权限
    通过禁止 root 登录,管理员需要先使用普通用户登录 SSH,然后通过 sudo 执行需要 root 权限的操作。这种方法提供了更多的安全控制和日志记录,便于追踪和管理。
  • 只允许通过 SSH 密钥登录
    禁用密码登录,确保只能通过公钥认证进行 SSH 登录,这是一种更安全的认证方式,避免暴力破解密码的风险。PasswordAuthentication no PermitRootLogin prohibit-password

3. 如何应用更改

在修改 /etc/ssh/sshd_config 文件后,需要重启 SSH 服务使配置生效:

# 重新加载 SSH 配置
sudo systemctl restart sshd

或者在某些 Linux 发行版中:

# 使用 service 命令重启 SSH 服务
sudo service ssh restart

4. 总结

  • PermitRootLogin 参数用于控制 root 用户是否可以通过 SSH 登录到服务器。
  • 默认情况下,PermitRootLogin 是 yes,允许 root 用户直接登录。
  • 为了提高安全性,建议将其设置为 no,禁止 root 用户通过 SSH 登录。
  • 如果需要 root 用户登录,可以选择使用密钥认证或通过 sudo 提升权限,确保更加严格的安全控制。