使用控制台连接恢复 OCI 实例

在普通 SSH 不可用时使用 OCI Cloud Shell、串行控制台或 VNC 观察启动并修复网络、SSH 和防火墙配置。

#type / howto #status / growing #tech / ops #resource / oracle-cloud #resource / ssh #platform / server

[!warning] 适用边界 控制台连接是排障通道,不是日常管理入口。它能绕过普通 VCN/SSH 网络,但不能凭空获得操作系统账号、密码或解密密钥。

使用控制台连接恢复 OCI 实例

目标

在 SSH 端口、防火墙、路由或启动过程损坏时进入控制台,收集证据并恢复最小可用 SSH,而不重装实例。

前置条件

  • OCI Console 和 MFA 可登录;
  • 对实例控制台连接有 IAM 权限;
  • 明确目标实例 OCID、区域和引导卷;
  • 本地连接时准备 RSA SSH 密钥;
  • 了解操作系统登录用户/密码或启动恢复方法。

先选择恢复方式

方式适合场景限制
Console History只需查看最近启动输出不能交互
Cloud Shell Serial快速进入串行控制台只能串行,需权限和可启动系统
Local Serial本地 SSH 连接控制台端点需 RSA 密钥和正确命令
VNC ConsoleGRUB、启动菜单、图形化/交互启动修复需本地 VNC 隧道和更多步骤

1. 查看 Console History

在实例详情找到 Console history,先下载/查看最近输出。寻找:

  • 内核 panic;
  • 文件系统检查失败;
  • cloud-init 卡住;
  • 网络接口失败;
  • sshd 配置错误;
  • 磁盘满或只读。

若输出已证明系统未完成启动,普通 SSH 排障价值较低,应使用 VNC 或引导卷救援。

2. 使用 Cloud Shell 串行连接

实例详情 -> OS Management/Resources -> Console connection -> Launch Cloud Shell connection。

OCI 会自动创建临时控制台连接和 SSH 密钥。终端出现后按 Enter 激活控制台。

如果系统显示登录提示:

login: operator
Password: ********

SSH 禁用密码并不必然禁用本地控制台密码,但系统必须存在有效的本地密码。没有密码时不要反复猜测,转向恢复模式或引导卷修复。

3. 使用本地串行连接

创建 Console Connection 时上传 RSA 公钥,然后复制控制台生成的 Linux/Mac 或 Windows 命令。

原则:

  • 使用控制台复制的当前命令,不手工猜端点和 OCID;
  • -i 必须同时出现在外层 SSH 和 ProxyCommand 中;
  • 首次连接核对控制台显示的主机指纹;
  • 不为了旧帖子报错永久放宽全局 SSH 算法;
  • 使用完删除控制台连接。

Oracle 官方说明控制台服务通过 SSH 443 端口连接,且本地控制台连接要求 RSA 密钥。

4. 登录后收集证据

date -Is
whoami
mount | head
df -hT
ip address
ip route
sudo systemctl --failed
sudo systemctl status ssh --no-pager || sudo systemctl status sshd --no-pager
sudo sshd -t
sudo ss -lntp
sudo ufw status numbered

先记录当前状态,再修改。

5. 恢复 SSH 配置

如果 sshd -t 报错,按行号修复或恢复最近备份:

sudo ls -lt /etc/ssh/sshd_config* /etc/ssh/sshd_config.d/
sudo cp -a /etc/ssh/sshd_config /root/sshd_config.broken.$(date +%s)
sudoedit /etc/ssh/sshd_config
sudo sshd -t
sudo systemctl reload ssh || sudo systemctl reload sshd

确保至少有一个已知端口监听:

sudo sshd -T | grep '^port '
sudo ss -lntp | grep ssh

6. 恢复防火墙

不要直接 ufw reset。先添加精确规则:

sudo ufw allow from ADMIN_CIDR to any port SSH_PORT proto tcp
sudo ufw status verbose

同时检查 OCI NSG/Security List。控制台连接能成功不证明公网路径正确。

7. 从外部新建 SSH 会话

保持控制台打开,从本机测试:

ssh -vv -i ~/.ssh/oci_a1 -p SSH_PORT operator@SERVER_IP

验证 sudo 后再退出控制台。

8. 清理

  • 删除临时 Console Connection;
  • 删除不再需要的临时公钥;
  • 移除临时全开放规则;
  • 保存脱敏故障记录;
  • 更新恢复文档和配置备份。

无法登录控制台怎么办

  • 系统未启动:使用 VNC/GRUB 或引导卷救援;
  • 忘记所有本地密码:不要假设 Cloud Shell 能绕过认证;
  • 文件系统损坏:停机并按 挂载引导卷修复 OCI 实例 操作;
  • 怀疑入侵:优先隔离和从可信备份重建。
创建于 2026/7/20 更新于 2026/7/20