使用控制台连接恢复 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 Console | GRUB、启动菜单、图形化/交互启动修复 | 需本地 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 实例 操作;
- 怀疑入侵:优先隔离和从可信备份重建。
Related notes
- 所属 MOC:甲骨文云服务器 MOC
- 前置:OCI 服务器生命周期与恢复阶梯
- CLI 具体踩坑:OCI 控制台连接 CLI 踩坑
- 常见触发场景:Fail2ban 误封导致 SSH 连接被立即关闭
- 官方文档:Troubleshooting Instances Using Instance Console Connection