CloudCone VPS 出现 SSH 连接报错"Permission denied"通常是因为认证配置不匹配,最直接的恢复方式是登录服务商控制台的 VNC 或 Web 控制台修改 SSH 配置。此方法适用于无法通过 SSH 远程登录但服务器仍在运行的场景,风险在于修改配置错误可能导致服务无法启动,需确保语法正确。
先说结论:多数情况是 SSH 配置禁止了密码登录或 Root 登录,或者密钥权限不对,需通过控制台重置配置。
- 先确认:区分报错是"Permission denied (publickey)"还是"Permission denied, please try again",前者是密钥问题,后者多为密码或策略问题。
- 先处理:通过 VPS 提供商管理后台的 VNC/Console 功能登录服务器,检查/etc/ssh/sshd_config 配置。
- 再验证:修改配置后重启 SSH 服务,本地终端使用 ssh -v 命令查看握手细节确认连接成功。
命令速用版
以下命令需在通过 VNC 或控制台登录服务器后执行,用于快速排查和修复 SSH 配置。
# 检查 SSH 服务状态 systemctl status sshd # 查看 SSH 配置中是否允许 Root 登录 grep "PermitRootLogin" /etc/ssh/sshd_config # 查看是否允许密码认证 grep "PasswordAuthentication" /etc/ssh/sshd_config # 重启 SSH 服务使配置生效 systemctl restart sshd # 本地客户端调试连接(在本地电脑运行) ssh -v root@你的 VPS_IP
为什么会这样
SSH 连接报错"Permission denied"本质是身份认证阶段被服务器拒绝,常见原因是服务端配置限制了登录方式或密钥权限不符。
SSH 支持密码认证和公钥认证两种主要方式。如果服务端配置文件/etc/ssh/sshd_config中设置了PermitRootLogin no,则禁止 root 用户直接登录;如果设置了PasswordAuthentication no,则禁止使用密码登录,必须使用密钥。此外,客户端私钥文件权限如果过于开放(如 777),SSH 客户端也会拒绝使用该密钥导致认证失败。部分 Linux 实例的 PAM 模块配置错误,如/etc/security/limits.conf中文件描述符限制不当,也可能间接导致登录被拒绝。
分步处理
按照以下顺序排查,优先使用控制台访问,避免无法远程修复。
1. 通过控制台登录服务器
登录 CloudCone 或其他 VPS 提供商的客户中心,找到实例管理页面,启动 VNC 或 Web Console。这是唯一在 SSH 完全不可用时的可靠入口。如果控制台能登录,说明系统内核和网络栈正常,问题局限在 SSH 服务层。
2. 检查 SSH 配置文件
在控制台终端执行 cat /etc/ssh/sshd_config | grep -E "PermitRootLogin|PasswordAuthentication|PubkeyAuthentication"。如果看到 PermitRootLogin no,需修改为 yes 或 prohibit-password。如果看到 PasswordAuthentication no 且你未配置密钥,需修改为 yes。修改使用 vim 或 nano 编辑器,保存退出。
3. 检查密钥权限(如果使用密钥登录)
如果报错提示 Permission denied (publickey),检查服务器端~/.ssh 目录权限是否为 700,authorized_keys 文件权限是否为 600。检查客户端本地私钥文件权限,执行 chmod 600 ~/.ssh/id_rsa 确保私钥不被其他用户读取。
4. 重启 SSH 服务
配置修改后必须重启服务。执行 systemctl restart sshd 或 service sshd restart。如果重启报错,立即检查配置文件语法,避免服务无法启动导致后续无法连接。
怎么验证是否生效
修改配置并重启服务后,在本地终端执行 ssh -v root@VPS_IP 命令。观察输出日志中 Authentication 部分,如果看到 Success 或进入 shell 提示符,说明修复成功。如果仍然报错,查看服务器端日志/var/log/secure 或/var/log/auth.log,搜索"Failed password"或"Permission denied"关键字,确认是被密码拒绝还是密钥拒绝。
常见坑
1. Root 登录策略:许多镜像默认禁止 root 密码登录,强制要求使用普通用户 sudo 或密钥登录,修改前需确认业务是否依赖 root 直连。
2. 防火墙干扰:虽然防火墙通常导致连接超时,但部分安全组规则可能拦截特定认证包,确保 TCP 22 端口对当前 IP 开放。
3. 配置文件语法:编辑 sshd_config 时不要留有多余空格或错误参数,否则 sshd 服务将无法启动。
4. PAM 限制:如果修改配置后仍报错,检查/etc/security/limits.conf 中 nofile 限制是否超过系统 fs.nr_open 上限,这会导致会话初始化失败。
常见问题
报错 Permission denied (publickey) 是什么意思?
意味着服务器拒绝了公钥认证,通常是公钥未添加到服务器 authorized_keys 文件或私钥权限设置错误。
Root 用户无法密码登录怎么办?
登录控制台修改/etc/ssh/sshd_config,将 PermitRootLogin 设置为 yes 并重启 SSH 服务。
忘记 SSH 密码且无法控制台登录怎么办?
需联系 VPS 提供商支持团队重置 root 密码或重装系统,本地无法强制破解。
修改配置后 SSH 服务启动失败怎么办?
通过控制台执行 sshd -t 命令检查配置文件语法错误,根据提示修正后再次重启。
参考来源
- VPS 服务器无法通过 SSH 连接的常见错误与解决方案(搜索结果收录于 2025 年 10 月 24 日)
- SSH 连接服务器时出现"Permission denied"错误如何解决?(2025 年 8 月 28 日)
- SSH 连接报错:Permission denied, please try again.的解决方法 - 博客园(2021 年 12 月 15 日)
- SSH 远程连接时报错提示 Permission denied (publickey).的解决方法(2025 年 7 月 24 日)
- Linux 实例:VNC 或 SSH 登录报错"Permission denied"(截至 2025 年 6 月 9 日)