因为从当前的云公司离职了,手头没有云主机可以用,用在自己电脑上通过虚拟机装下 Linux 平时玩下。现在因为centos stream的原因,所以换用了rocky linux,不过在安装完成后,发现无法通过本机电脑 ssh 连接上该主机,检查了下发现这些地方都没有问题,对应的 /var/log/secure 日志查看了有登录失败报错的信息,。猜想无非是 pam_unix2 模块、/etc/hosts.deny、防火墙等屏蔽了主机上的登录,不过检查发现都是正常的,又查了下 sshd.conf 配置,发现了是 PermitRootLogin prohibit-password 默认配置引起的。

PAM 3 more authentication failures

在 SSH 配置中,PermitRootLogin prohibit-password 是一种安全措施,用于控制 root 用户的登录权限。这个配置项位于 SSH 服务器的配置文件 /etc/ssh/sshd_config 中。理解和正确配置这一项对于保护你的服务器免受未经授权的访问非常重要。

解释 PermitRootLogin prohibit-password

  • PermitRootLogin prohibit-password: 这个配置选项允许 root 用户通过 SSH 登录,但禁止使用密码进行认证。即,root 用户只能使用密钥对认证的方式进行登录,不能通过密码登录。这个选项增加了安全性,因为密钥认证比密码认证更难被暴力破解。

如何配置 PermitRootLogin prohibit-password

  1. 编辑 SSH 配置文件: 使用你喜欢的文本编辑器打开 SSH 配置文件。通常需要超级用户权限:

    1sudo nano /etc/ssh/sshd_config
    

    或者使用其他编辑器,例如 vi

    1sudo vi /etc/ssh/sshd_config
    
  2. 找到或添加 PermitRootLogin: 查找配置文件中的 PermitRootLogin 行。如果不存在,请添加它。设置为 prohibit-password

    1PermitRootLogin prohibit-password
    

    如果已经存在其他配置(如 PermitRootLogin yesPermitRootLogin no),请修改为上述设置。

  3. 保存并关闭文件: 在 nano 中,按 Ctrl + X,然后按 Y 进行保存。在 vi 中,按 Esc,然后输入 :wq 并按 Enter 键。

  4. 重启 SSH 服务: 配置更改后,你需要重启 SSH 服务使其生效:

    1sudo systemctl restart sshd
    

    或者:

    1sudo service sshd restart
    

其他相关选项

  • PermitRootLogin yes: 允许 root 用户使用 SSH 登录,不限制认证方式(包括密码)。
  • PermitRootLogin no: 禁止 root 用户通过 SSH 登录。
  • PermitRootLogin without-password: 允许 root 用户使用 SSH 密钥对进行认证,但禁止使用密码进行认证(这个选项通常与 prohibit-password 等价)。

总结

PermitRootLogin prohibit-password 是一个推荐的安全设置,它允许 root 用户通过 SSH 登录但只允许使用密钥对认证,从而增强系统的安全性。确保你已经设置并配置了 SSH 密钥对,并且将公钥正确地添加到 root 用户的 ~/.ssh/authorized_keys 文件中。