OCI 控制台连接 CLI 踩坑

用 OCI CLI 在 Cloud Shell 创建并使用串口控制台连接时的若干具体报错与绕过方法。

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

[!info] 定位 本文记录用 CLI 走串口控制台时的具体坑。完整恢复流程见 使用控制台连接恢复 OCI 实例

OCI 控制台连接 CLI 踩坑

坑 1:compartment list 查不到实例所在 compartment

oci iam compartment list 默认不列根 compartment(即 tenancy 本身)。若实例直接建在 tenancy 根下,用该命令找不到 compartment-id。

绕过:直接用 tenancy OCID 作为 compartment-id,或从控制台实例详情页「一般信息 → OCID」点复制按钮拿实例 OCID(最快)。

坑 2:参数名是 —ssh-public-key-file

创建控制台连接时上传公钥的参数是 --ssh-public-key-file,不是 --public-key-file,后者报 No such option

oci compute instance-console-connection create \
  --instance-id <OCID> \
  --ssh-public-key-file ~/.ssh/id_rsa.pub

坑 3:ssh-rsa 算法与新版 OpenSSH 不兼容

连接控制台时报 Permission denied (publickey)-v 日志里有关键一行:

debug1: send_pubkey_test: no mutual signature algorithm

原因:InstanceConsoleSSHD 用 ssh-rsa(SHA-1)签名,而新版 OpenSSH(8.8+)默认禁用。需要在命令里重新启用。注意参数名随版本不同:

  • 新版 OpenSSH:-o PubkeyAcceptedAlgorithms=+ssh-rsa
  • 老版 OpenSSH(如 Cloud Shell 的 8.0):-o PubkeyAcceptedKeyTypes=+ssh-rsa(用新参数名会报 Bad configuration option
ssh -o PubkeyAcceptedKeyTypes=+ssh-rsa -o HostKeyAlgorithms=+ssh-rsa \
  -i ~/.ssh/id_rsa \
  -o ProxyCommand='ssh -W %h:%p -p 443 <console-connection-ocid>@instance-console.<region>.oci.oraclecloud.com' \
  ubuntu@<instance-ocid>

坑 4:串口控制台 OS 登录需要密码

SSH 认证通过后,串口把键盘输入直接送到实例的 ttyS0,出现的是操作系统 login 提示符。但 Oracle 的 Ubuntu 镜像默认 ubuntu 用户没有设置密码(仅 SSH key),所以 login: ubuntu 之后输任何密码都不对。

结论:串口控制台对无密码用户走不通。改用 VNC 控制台,或直接 oci compute instance action --action SOFTRESET 重启实例(可清掉 fail2ban 等非持久封禁)。

坑 5:Cloud Shell 粘贴多行命令丢续行符

Cloud Shell 终端粘贴带 \ 续行的多行命令时,换行符可能被吃掉,导致参数错位、报 Got unexpected extra argument。复杂 OCI 查询应拆成单行命令分步执行。

创建于 2026/7/21 更新于 2026/7/21