解决页

为什么在 CentOS 上关闭 SSH 密码登录后就连不上了

最常见的原因是先关闭了 PasswordAuthentication,却没有先确认目标账号已经存在可用的 authorized_keys,并且没有先做一次成功的密钥登录验证。

更新时间 2026-04-07

问题说明

CentOS 主机在关闭 SSH 密码登录后立刻无法连接,最常见的原因是什么?

大多数情况下,并不是服务器把 SSH 整体关掉了,而是你把“最后仅剩的认证方式”切成了公钥,但目标账号并没有真正可用的公钥路径。这可能是 authorized_keys 不存在、公钥加在了错误的用户下、文件权限不对,或者客户端发出的根本不是你以为的那把 key。

正确做法应该把“关闭密码登录”视为最后一步,而不是第一步。先保留当前连接,再从另一终端验证一次全新的密钥登录,只有确认成功之后,才去关掉 PasswordAuthentication。

用一个受控脚本来做这件事,能明显降低误锁风险,因为它会先检查 authorized_keys、执行 sshd -t 语法校验,并在配置确定可用后才重载服务。它不能替你修复所有密钥错配问题,但能避开最常见的自锁场景。

处理重点

  • 先确认 usable authorized_keys 到底属于哪个账号
  • 检查 .ssh 目录和 authorized_keys 权限是否正确
  • 关闭旧会话前先做一次全新的密钥登录测试
  • 如果公钥属于非 root 用户,执行脚本时使用 TARGET_USER

所属专题

面向仍在运行 CentOS 7 的遗留主机,集中处理 yum 源失效、镜像仓库 404、Docker 数据迁移等运维恢复场景。