LHIDC

SSH 登录提示 `Permission denied`,密码和密钥应该怎么检查

SSH Permission denied 说明连接已经进入认证阶段。本文从用户名、密码、密钥权限、authorized_keys、root 登录策略和认证日志几个角度说明如何定位。

`Permission denied` 是 SSH 已经连到服务器之后才出现的错误。它说明网络、端口、SSH 服务大概率已经工作,失败点在认证阶段。继续排查安全组或线路通常不是第一优先级,应该把注意力放到账号、密码、密钥和登录策略。

先看括号里的认证方式

常见提示有两类:

报错可能含义排查重点
`Permission denied (publickey)`服务器只接受密钥,客户端没有正确私钥私钥、authorized_keys、权限
`Permission denied, please try again`密码错误、用户错误或用户不允许登录用户名、密码、账号状态
root 失败普通用户成功root 被禁止直接登录`PermitRootLogin`
多次失败后突然连不上安全工具封禁来源 IPfail2ban、面板安全、防火墙

用户名经常比密码更容易错

不同镜像默认用户不一样。Ubuntu 常见 `ubuntu`,Debian 可能是 `debian`,CentOS 可能允许 `root`。可以分别尝试:

ssh root@服务器IP
ssh ubuntu@服务器IP

如果用户名错了,密码正确也会失败。服务商开通信或控制台通常会写明默认用户。

密钥登录要检查两端

客户端指定私钥:

ssh -i ~/.ssh/id_rsa root@服务器IP

私钥权限建议:

chmod 600 ~/.ssh/id_rsa

服务器端公钥在用户目录:

~/.ssh/authorized_keys

目录权限和文件权限通常应为:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

权限过宽时,SSH 可能拒绝读取密钥文件。多个用户之间复制密钥时,也要确认文件所有者正确。

看 sshd_config 认证策略

grep -E 'PermitRootLogin|PasswordAuthentication|PubkeyAuthentication' /etc/ssh/sshd_config

`PasswordAuthentication no` 表示密码登录关闭;`PermitRootLogin no` 表示 root 不能直接登录;`PubkeyAuthentication yes` 表示允许公钥认证。

改完配置先测试:

sshd -t

确认无误后再重启 SSH。

认证日志比猜测可靠

CentOS/RHEL:

tail -n 100 /var/log/secure

Debian/Ubuntu:

tail -n 100 /var/log/auth.log

日志会记录无效用户、密码失败、公钥失败、root 登录被拒绝等信息。看到 `Failed password for invalid user`,说明用户名不存在;看到 `Authentication refused`,可能和权限有关。

安全提醒

不要为了临时方便长期开启 root 密码登录。不要把私钥发给别人。不要连续高频尝试密码,可能触发封禁策略,让问题从认证失败变成连接超时。

如果所有可用账号都无法登录,但控制台还能进入,可以通过控制台重置密码或修复密钥。如果控制台也无法进入,需要通过服务商救援模式或工单协助恢复访问。

上一篇 SSH 提示 `Connection timed out` 怎么处理?网络、防火墙和安全组排查 下一篇 Linux 服务器突然变慢,应该先看哪些指标

LHIDC 产品中心

继续查看可购买的海外服务器产品

文章用于辅助选型,最终价格、库存与配置请以产品详情页和下单页面展示为准。

查看产品 查看方案