SSH 登录提示 Permission denied 通常是因为密钥权限错误、公钥未授权或服务端禁止了当前登录方式。最推荐的处理方向是先检查本地私钥权限是否为 600,再确认服务端 sshd_config 是否允许密码或公钥登录。
先说结论:该报错本质是身份验证失败,需按客户端密钥权限、服务端配置、登录用户名的顺序排查。
- 先确认本地私钥文件权限是否设置为 600
- 先处理服务端 sshd_config 中 PermitRootLogin 或 PasswordAuthentication 配置
- 再验证登录用户名是否与服务器实际用户一致
命令速用版
以下命令用于快速修复本地密钥权限并尝试 verbose 模式登录,便于定位问题:
chmod 600 ~/.ssh/id_rsa
ssh -v root@your_server_ip若使用特定密钥文件,需指定-i 参数:
ssh -i ~/.ssh/your-key.pem root@your_server_ip为什么会这样
SSH 服务出于安全考虑,会对密钥文件权限和服务端配置进行严格校验。导致 Permission denied 的核心原因通常是客户端私钥权限过宽被拒绝,或服务端配置禁止了当前使用的认证方式。
SSH 协议依赖非对称加密,本地私钥权限若超过 600,客户端会主动拒绝使用。同时,服务端/etc/ssh/sshd_config 若配置了 PermitRootLogin no 或 PasswordAuthentication no,而用户仍尝试对应方式登录,也会触发该报错。
分步处理
按以下顺序操作,每步完成后尝试重新连接:
1. 检查本地密钥权限
确保私钥文件仅所有者可读写。执行以下命令修改权限:
chmod 600 ~/.ssh/id_rsa
chmod 700 ~/.ssh若权限不正确,SSH 客户端会忽略该密钥并尝试其他方式,导致最终失败。
2. 确认登录用户名
检查命令中的用户名是否正确。部分服务器禁止 root 直接登录,需使用普通用户(如 ubuntu、deploy)登录后再切换:
ssh ubuntu@your_server_ip用户名错误会直接导致验证失败,即使密钥正确。
3. 检查服务端配置(需控制台访问)
若无法 SSH 登录,需通过云厂商控制台 VNC 或重置密码方式进入系统。检查/etc/ssh/sshd_config 文件:
PermitRootLogin yes
PasswordAuthentication yes
PubkeyAuthentication yes修改后重启 SSH 服务:
sudo systemctl restart sshd怎么验证是否生效
使用-v 参数开启详细模式,观察认证过程:
ssh -v root@your_server_ip若看到 Authentication succeeded 或 Welcome 字样,说明连接成功。若仍显示 Permission denied (publickey,password),查看输出中是否有 Offering public key 或 Authentication failed 字样,确认是密钥被拒绝还是密码被拒绝。
常见坑
1. 密钥权限过宽:私钥权限若为 644 或 755,SSH 会报错并忽略密钥,需严格设置为 600。
2. authorized_keys 权限错误:服务器端~/.ssh 目录权限应为 700,authorized_keys 文件权限应为 600,否则服务端拒绝读取。
3. Root 登录被禁:许多云服务器默认禁止 root 密码登录,需改用密钥或普通用户,不可强行开启 root 密码登录以免降低安全性。
常见问题
为什么改了权限还是报错?
可能是服务端 authorized_keys 文件权限错误或内容格式不对。确保服务器端~/.ssh 目录权限为 700,authorized_keys 文件权限为 600,且公钥内容完整无换行错误。
忘记密码且无法 SSH 登录怎么办?
需通过云厂商控制台使用 VNC 或单用户模式重置密码。重置后建议立即配置密钥登录并关闭密码认证,以提高安全性。
可以使用密码登录吗?
可以,但需在服务端 sshd_config 中设置 PasswordAuthentication yes。出于安全考虑,生产环境建议仅使用密钥登录并关闭密码认证。
参考来源
- MAC 使用 SSH 公钥登录服务器报错 Permission denied (publickey) 解决方案
- SSH 登录失败报错 Permission denied (publickey) 的解决方法
- SSH 远程连接时报错提示 Permission denied (publickey).的解决方法
- SSH 连接报错“Permission denied”的解决方法
- SSH 免密登录失效?从密钥生成到配置的完整避坑指南 (附 Permission denied 解决方案)