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 密码登录。如果你在云服务器上工作,检查服务商的文档是否有类似的安全限制。

最后修改:2024 年 10 月 09 日
反正没人给,你也爱给不给吧。