问题说明
CentOS 主机在关闭 SSH 密码登录后立刻无法连接,最常见的原因是什么?
大多数情况下,并不是服务器把 SSH 整体关掉了,而是你把“最后仅剩的认证方式”切成了公钥,但目标账号并没有真正可用的公钥路径。这可能是 authorized_keys 不存在、公钥加在了错误的用户下、文件权限不对,或者客户端发出的根本不是你以为的那把 key。
正确做法应该把“关闭密码登录”视为最后一步,而不是第一步。先保留当前连接,再从另一终端验证一次全新的密钥登录,只有确认成功之后,才去关掉 PasswordAuthentication。
用一个受控脚本来做这件事,能明显降低误锁风险,因为它会先检查 authorized_keys、执行 sshd -t 语法校验,并在配置确定可用后才重载服务。它不能替你修复所有密钥错配问题,但能避开最常见的自锁场景。
处理重点
- 先确认 usable authorized_keys 到底属于哪个账号
- 检查 .ssh 目录和 authorized_keys 权限是否正确
- 关闭旧会话前先做一次全新的密钥登录测试
- 如果公钥属于非 root 用户,执行脚本时使用 TARGET_USER