Linux 禁止密码登录
为了服务器的安全性, 限制服务器只能通过密钥登录而不能通过密码登录
修改 SSH 配置文件
SSH 配置文件路径在 /etc/ssh/sshd_config
1. 禁止密码登录
找到 PasswordAuthentication
参数, 将其值改为 no
2. 禁止 root 用户登录
找到 PermitRootLogin
参数, 将其值改为 no
若需允许 root 用户通过密钥登录但禁止密码登录, 可修改 PermitRootLogin
参数为 prohibit-password
重启 SSH 服务
记得运行下面命令重启 SSH 服务
sudo service ssh restart
记一次 SSH 安全性错误
已按上面流程配置文件并重启 SSH 服务, 但是还是可以通过密码登录. 而且自认为已禁止密码登录所以设置了一个非常弱的密码, 导致服务器非常容易被攻破
排查问题
起初以为是 SSH 服务未重启, 尝试了各种方式, 但还是可以通过密码连接.
突然好像想到了什么, config.d
模式的配置目录通常比根配置文件有更高的优先级, 而 SSH 服务正好有个 sshd_config.d
目录, 查看一下该目录
ls /etc/ssh/sshd_config.d
果然有个 50-cloud-init.conf
文件, 查看该文件内容
sudo cat /etc/ssh/sshd_config.d/50-cloud-init.conf
好家伙, 果然有一段
PasswordAuthentication yes
重启 SSH 服务并尝试密码连接, 这次果然无法通过密码连接了
最后忍不住吐槽一下字节的火山引擎, 相较于阿里云安全性做得有点差, 居然给我留了个暗坑
总结
在修改 SSH 服务配置的时候一定要注意先清空 /etc/ssh/sshd_config.d
目录, 同时修改配置时建议在该目录下增加配置文件进行配置, 而不是直接修改 /etc/ssh/sshd_config
文件, 防止被更高优先级的配置覆盖而出错