一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

UbuntuSSH密码登录失效修复指南

时间:2026-07-23 08:59:50 编辑:袖梨 来源:一聚教程网

Ubuntu SSH 强制密钥登录:配置不生效的排查与修复

症状

UbuntuSSH密码登录失效的修复指南

修改 PasswordAuthentication yes 并重启 sshd,客户端仍报 Permission denied (publickey)

根因

sshd 运行时配置由多个文件合并决定,云镜像默认配置往往被 /etc/ssh/sshd_config.d/50-cloud-init.conf 中的 PasswordAuthentication no 覆盖,或存在 AuthenticationMethods 限制。

排查步骤

1. 查看 sshd 运行时生效值

sudo sshd -T | grep -E 'passwordauthentication|authenticationmethods|kbdinteractiveauthentication'

要求:

  • passwordauthentication yes
  • authenticationmethods 输出为空(无任何限制)
  • kbdinteractiveauthentication yes

任何一项不符,继续。

2. 定位冲突配置文件

sudo grep -rn "PasswordAuthentication|AuthenticationMethods" /etc/ssh/sshd_config /etc/ssh/sshd_config.d/

常见冲突源:/etc/ssh/sshd_config.d/50-cloud-init.conf 内含 PasswordAuthentication no

3. 创建高优先级覆盖配置

sudo tee /etc/ssh/sshd_config.d/99-password-auth.conf <<EOFPasswordAuthentication yesKbdInteractiveAuthentication yesEOF

若步骤 1 中发现 authenticationmethods 非空,追加一行以清空限制:

echo "AuthenticationMethods password" | sudo tee -a /etc/ssh/sshd_config.d/99-password-auth.conf

4. 语法检查并重启服务

sudo sshd -t && sudo systemctl restart ssh

5. 确认用户密码可用

sudo passwd -S <username>

状态必须为 P(密码已设置)。若为 L(锁定),执行 sudo passwd -u <username>;若为 NP(无密码),执行 sudo passwd <username>

6. 验证客户端支持的认证方式

ssh -o PreferredAuthentications=password -v user@host

输出中应出现 Authentications that can continue: password

常见错误与处理

AuthenticationMethods publickey 强制密钥

→ 在步骤 3 覆盖为 AuthenticationMethods password 或直接注释原文件行。

KbdInteractiveAuthentication no 导致 PAM 密码认证失效

→ 步骤 3 已覆盖。

用户密码未设置或锁定

→ 步骤 5 解决。

sshd -T 仍显示 passwordauthentication no

→ 检查 /etc/ssh/sshd_config.d/ 下文件名的排序,确保 99- 文件最晚加载。可用 sudo sshd -T | grep -B1 passwordauthentication 观察来源文件(需 root 权限查看)。

恢复密钥认证(运维后必做)

sudo rm /etc/ssh/sshd_config.d/99-password-auth.confsudo systemctl restart ssh

热门栏目