PermitRootLogin 是 SSH 服务(sshd)配置文件 /etc/ssh/sshd_config 中的一个参数,用于控制是否允许通过 SSH 直接以 root 用户身份 登录到服务器。这个设置是为了增强系统的安全性,特别是在远程访问和管理服务器时。
- 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 执行某些指定的命令,禁止交互式登录。
示例配置:
允许 root 用户通过 SSH 登录:PermitRootLogin yes
禁止 root 用户通过 SSH 登录:PermitRootLogin no
只允许通过 SSH 密钥登录 root 用户:PermitRootLogin without-password # 或 PermitRootLogin prohibit-password
允许 root 用户通过 SSH 登录,但只允许执行指定命令:PermitRootLogin forced-commands-only
- 安全建议
在生产环境中,特别是服务器暴露在公网上时,强烈建议禁用 root 用户 的直接 SSH 登录,防止恶意攻击者通过暴力破解密码或其他方式获取 root 权限。为了增强 SSH 的安全性,可以考虑以下配置:
禁用 root 用户的直接 SSH 登录:PermitRootLogin no
使用普通用户登录后,再通过 sudo 提升权限:
通过禁止 root 登录,管理员需要先使用普通用户登录 SSH,然后通过 sudo 执行需要 root 权限的操作。这种方法提供了更多的安全控制和日志记录,便于追踪和管理。
只允许通过 SSH 密钥登录:
禁用密码登录,确保只能通过公钥认证进行 SSH 登录,这是一种更安全的认证方式,避免暴力破解密码的风险。PasswordAuthentication no PermitRootLogin prohibit-password
- 如何应用更改
在修改 /etc/ssh/sshd_config 文件后,需要重启 SSH 服务使配置生效:
重新加载 SSH 配置
sudo systemctl restart sshd
php
41 Bytes
© 菜鸟-创作你的创作
或者在某些 Linux 发行版中:
使用 service 命令重启 SSH 服务
sudo service ssh restart
php
49 Bytes
© 菜鸟-创作你的创作
- 总结
PermitRootLogin 参数用于控制 root 用户是否可以通过 SSH 登录到服务器。
默认情况下,PermitRootLogin 是 yes,允许 root 用户直接登录。
为了提高安全性,建议将其设置为 no,禁止 root 用户通过 SSH 登录。
如果需要 root 用户登录,可以选择使用密钥认证或通过 sudo 提升权限,确保更加严格的安全控制。
https://www.52runoob.com/archives/4726