遇到甲骨文云 Ubuntu 22.04 实例 SSH 连接报错权限被拒绝,通常是因为默认用户名错误、密钥权限设置不当或云平台网络安全规则未放行,建议优先检查本地 SSH 命令参数和控制台安全列表。
先说结论:甲骨文云 Ubuntu 镜像默认禁用 root 账户密码登录,必须使用正确的用户名和 SSH 密钥,且网络安全规则需放行 22 端口。
- 先确认:登录用户名是否为 ubuntu,密钥文件权限是否为 600
- 先处理:在甲骨文云控制台检查安全列表入站规则是否允许 TCP 22
- 再验证:查看实例内部 /var/log/auth.log 确认拒绝原因
命令速用版
如果本地已准备好密钥文件,可尝试使用以下标准命令格式连接,注意替换密钥路径和实例 IP:
ssh -i ~/.ssh/你的密钥文件.pem ubuntu@<实例公共 IP>若连接仍失败,可添加 -v 参数查看详细握手过程:
ssh -v -i ~/.ssh/你的密钥文件.pem ubuntu@<实例公共 IP>为什么会这样
云厂商提供的 Ubuntu 镜像出于安全加固考虑,默认配置中禁用了 root 账户的密码登录,且 SSH 服务通常仅允许密钥认证。这意味着即使你知道 root 密码,也无法直接通过密码登录。此外,甲骨文云实例外层有安全列表(Security List)和网络防火墙控制,即使操作系统内部防火墙开放,若控制台未放行端口,请求也无法到达实例。
分步处理
检查本地密钥权限:SSH 客户端要求私钥文件权限必须严格受限,否则会被拒绝使用。在终端执行:
chmod 600 ~/.ssh/你的密钥文件.pem确认登录用户名:甲骨文云 Ubuntu 实例的默认登录用户是
ubuntu,而不是root或admin。确保 SSH 命令中指定了正确的用户。检查网络安全规则:登录甲骨文云控制台,进入实例详情页面,点击子网链接,查看安全列表的入站规则。确保有一条允许源地址为 0.0.0.0/0(或你的本地 IP)、目标端口为 22、协议为 TCP 的规则。
使用串行控制台救援:如果上述步骤无效且无法 SSH 登录,可在控制台实例详情页选择“串行控制台访问”,通过浏览器提供的 VNC 或串行界面登录实例,检查内部配置。
怎么验证是否生效
在本地终端使用带 -v 参数的 SSH 命令,观察输出最后是否显示 Authentication succeeded 或进入 shell 提示符。若能登录实例,可在终端执行:
sudo tail -f /var/log/auth.log然后在另一个窗口尝试 SSH 连接,观察日志中是否有 Accepted publickey 记录。若看到 Permission denied 或 Connection closed,则说明配置仍有问题。
常见坑
- 密钥格式不兼容:部分旧版 SSH 客户端可能不支持新格式的私钥,若报错提示密钥格式错误,可尝试使用
ssh-keygen -p -m PEM -f转换格式。 - 系统内部防火墙拦截:即使甲骨文云控制台放行了端口,实例内部的
ufw或firewalld也可能拦截 22 端口,需通过串行控制台检查状态。 - 安全组修改延迟:修改网络安全规则后通常即时生效,但在极少数网络拥堵情况下可能有秒级延迟,建议修改后等待片刻再尝试连接。