PasswordAuthentication yes 在 /etc/ssh/sshd_config 设置后无效
解决方法在第六点
6.检查 /etc/ssh/sshd_config.d/ 目录
如果你已经在 /etc/ssh/sshd_config 文件中将 PasswordAuthentication 设置为 yes,但仍然无法使用密码登录,可能还存在其他配置或问题。下面是一些进一步的排查步骤:
1.确认配置保存成功
确保你在编辑 /etc/ssh/sshd_config 文件后正确保存了文件。
使用以下命令检查配置文件中的 PasswordAuthentication 设置是否正确:
grep PasswordAuthentication /etc/ssh/sshd_config
输出应该类似于:
PasswordAuthentication yes
2.检查其他相关的 SSH 设置
除了 PasswordAuthentication,你还应该检查以下几个设置是否正确:
ChallengeResponseAuthentication 设置为 no:
ChallengeResponseAuthentication no
UsePAM 设置为 yes:
UsePAM yes
确保这些设置没有问题。
3.重启 SSH 服务
确认你已经正确重启 SSH 服务以应用配置更改:
sudo systemctl restart ssh
你可以使用以下命令检查 SSH 服务是否正常运行:
sudo systemctl status ssh
确保服务正在运行,并且没有出现错误。
4.防火墙设置
如果你使用了防火墙(如 ufw),确保其允许 SSH 连接:
sudo ufw allow ssh
sudo ufw status
5.检查 SSH 端口
如果你修改了 SSH 端口,确保客户端使用正确的端口号。例如,如果你将 SSH 端口改为 2222,则需要使用以下命令登录:
ssh root@your_server_ip -p 2222
6.检查 /etc/ssh/sshd_config.d/ 目录
Ubuntu 20.04 及以后版本可能会使用 /etc/ssh/sshd_config.d/ 目录来存储额外的 SSH 配置文件。如果这里的配置文件覆盖了你在 /etc/ssh/sshd_config 中的设置,也可能导致密码认证无效。
你可以检查该目录是否包含额外的配置文件:
ls /etc/ssh/sshd_config.d/
如果有文件,检查其内容是否包含与 PasswordAuthentication 相关的设置。
7.查看 SSH 日志
如果上述步骤仍然无效,你可以查看 SSH 日志,找出 SSH 拒绝密码登录的原因。
运行以下命令查看 SSH 日志文件:
tail -f /var/log/auth.log
在你尝试登录后,查看日志中是否有相关的错误提示。
8.检查 root 用户 Shell
确保 root 用户拥有有效的登录 Shell。运行以下命令检查:
grep root /etc/passwd
输出应类似于:
root:x:0:0:root:/root:/bin/bash
确保 root 用户的 Shell 是 /bin/bash 或者 /bin/sh,而不是 /usr/sbin/nologin 或 /bin/false。
9.云服务限制
某些云服务提供商(如 AWS、GCP)会在默认配置中禁用 root 密码登录。如果你在云服务器上工作,检查服务商的文档是否有类似的安全限制。