如何使用 SSH 密钥连接甲骨文云 ARM 架构服务器?

文章导读
直接使用本地生成的 SSH 密钥对,在创建实例时上传公钥,完成后用私钥和对应默认用户名登录,这是甲骨文云 ARM 实例最标准且安全的连接方式。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 故障排查与 VNC 救援
  6. 常见坑
  7. 参考来源
A A

直接使用本地生成的 SSH 密钥对,在创建实例时上传公钥,完成后用私钥和对应默认用户名登录,这是甲骨文云 ARM 实例最标准且安全的连接方式。

先说结论:连接甲骨文云 ARM 服务器不需要特殊工具,标准 SSH 客户端即可,关键在于密钥权限、默认用户名及安全组配置。

  • 适合:新购实例初始化、重置访问凭证或本地密钥丢失场景
  • 先准备:本地生成 SSH 密钥对(推荐 ed25519),确认控制台安全组已放行 22 端口(建议限制特定 IP)
  • 验收:能免密登录且内部防火墙未拦截连接请求

命令速用版

ssh -i ~/.ssh/id_ed25519 opc@<公共 IP 地址>

如果是 Ubuntu 镜像,将 opc 替换为 ubuntu。若使用 RSA 密钥,请替换文件名。

如何使用 SSH 密钥连接甲骨文云 ARM 架构服务器?

为什么会这样

甲骨文云出于安全考虑,默认禁用密码登录,强制要求使用密钥对认证。ARM 架构仅指服务器 CPU 指令集,不影响 SSH 协议本身的通信流程,因此 x86 电脑可以直接连接 ARM 服务器。连接失败通常是因为本地私钥权限过于开放、控制台安全组未放行 22 端口,或使用了错误的默认用户名。

如何使用 SSH 密钥连接甲骨文云 ARM 架构服务器?

分步处理

  1. 生成密钥对(若没有):在本地终端运行 ssh-keygen -t ed25519 -C "your_email@example.com",按提示保存(默认路径 ~/.ssh/id_ed25519)。
  2. 上传公钥:在甲骨文云控制台创建实例时,选择“上传公钥”,粘贴 ~/.ssh/id_ed25519.pub 内容。
  3. 检查网络安全:进入虚拟云网络(VCN)的安全列表,确保 ingress 规则允许 TCP 22 端口。 安全建议:来源 IP 建议仅填写本地管理 IP,避免开放 0.0.0.0/0 遭受暴力破解。
  4. 调整本地权限:运行 chmod 400 ~/.ssh/id_ed25519,防止因权限过大被 SSH 客户端拒绝。
  5. 发起连接:使用上述命令速用版中的命令进行连接。

怎么验证是否生效

连接成功后,终端提示符会变为服务器内部样式。运行 whoami 应返回 opcubuntu。若需排查,可在命令中加入 -v 参数查看握手细节,如 ssh -v -i ...,观察输出中是否有 Authentication succeeded

故障排查与 VNC 救援

若 SSH 无法连接且安全组已放行,可通过控制台 VNC 登录内部修复。

  1. 入口路径:登录甲骨文云控制台 > 计算 > 实例 > 点击实例名称 > 资源下的“控制台连接”。
  2. 建立连接:创建控制台连接后,点击“启动 VNC 会话”,按提示下载私钥并使用 VNC 客户端连接。
  3. 内部修复:登录后检查内部防火墙(sudo systemctl status firewalldufw status),或检查 /home/opc/.ssh/authorized_keys 权限与内容。

常见坑

  • 用户名错误:不要尝试用 root 登录,Oracle Linux 默认是 opc,Ubuntu 默认是 ubuntu
  • 密钥权限:本地私钥文件权限不能是 644 或 777,必须 restrictive(如 400)。
  • 内部防火墙:部分镜像内部开启了 firewalld 或 ufw,若控制台安全组放行后仍不通,需通过控制台 VNC 登录检查内部防火墙状态。
  • ARM 兼容性:连接本身无影响,但若在本地编译二进制文件上传运行,需注意 ARM64 架构兼容性。

参考来源

  • Oracle Cloud Infrastructure Documentation, "Managing Key Pairs", https://docs.oracle.com/en-us/iaas/Content/Compute/Tasks/managingkeypairs.htm
  • Oracle Cloud Infrastructure Documentation, "Connecting to an Instance", https://docs.oracle.com/en-us/iaas/Content/Compute/Tasks/accessinginstance.htm