别看了,在加载了......

文章背景图

OCI CLI 使用与安全组开放端口实战记录

2026-05-13
7
-
- 分钟
|

一、前言

最近在使用OCI AMD 小鸡时,遇到了一个经典问题:

  • SSH 可以连接

  • Docker 服务已经运行

  • 本地 curl 正常

  • 但公网无法访问服务

最后发现:

问题并不是 Docker,也不是 Linux 防火墙。

而是:OCI Security List(云防火墙)没有开放端口。

由于 OCI 控制台在国内网络环境下经常卡顿、加载失败,因此尝试完全使用:

  • SSH(一台vps)

  • OCI CLI(一台vps下载官方脚本安装配置api使用)

  • OCI API(前置条件:进入控制台导出的一份)

来管理云服务器。

本文记录完整操作流程。


二、OCI 网络结构基础理解

OCI 的公网访问分为两层:

1. Linux 系统自身监听端口

例如:

 ss -tulnp

如果看到:

 0.0.0.0:25774

说明:

程序已经监听公网网卡。


2. OCI Security List(云防火墙)

即:

云平台自己的网络规则。

即使 Linux 已经监听:

如果 Security List 没开放:

公网依旧无法访问。


三、常见端口含义

端口

作用

22

SSH远程连接

80

HTTP网站

443

HTTPS网站

25774

Komari监控面板


四、安装 OCI CLI

OCI CLI 本质:

是官方提供的:

命令行 API 管理工具

安装:

 bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"

安装完成后验证:

 /root/bin/oci --version

例如:

 3.82.0

说明安装成功。

这一步全局环境变量后续问AI去……


五、配置 OCI API

执行:

 /root/bin/oci setup config

需要准备:(api的全都有),一步一步的输入

  • User OCID

  • Tenancy OCID

  • Region

  • API 私钥 pem 文件

例如:

 region=ap-tokyo-1

配置完成后:

测试:

 /root/bin/oci iam region list

如果返回 JSON:

说明:

OCI API 已成功连接。


六、查看 Security List

执行:

/root/bin/oci network security-list list --compartment-id [你的tenancy_ocid]

返回:

{
  "data": [
    {
      "display-name": "Default Security List for default-vcn",
      "id": "ocid1.securitylist.oc1.xxx"
    }
  ]
}

重点记录:

security-list-id

七、导出当前防火墙规则(非常重要)

OCI Security List:

不是追加模式

而是:

全量覆盖模式

因此:

必须先备份旧规则。

导出:

/root/bin/oci network security-list get --security-list-id 你的security-list-id --query 'data."ingress-security-rules"' --output json > rules.json

查看:

cat rules.json

八、修改 rules.json 开放端口

编辑:

nano rules.json

在原规则基础上:

新增:

  • 80

  • 443

  • 25774

例如:

{
  "description": "HTTP",
  "icmp-options": null,
  "is-stateless": false,
  "protocol": "6",
  "source": "0.0.0.0/0",
  "source-type": "CIDR_BLOCK",
  "tcp-options": {
    "destination-port-range": {
      "max": 80,
      "min": 80
    },
    "source-port-range": null
  },
  "udp-options": null
}

443 与 25774 同理。


九、非常重要:绝对不要删除22端口

SSH 依赖:

22

如果误删:

会导致:

SSH失联

因此:

修改 rules.json 时:

必须保留:

{
  "protocol": "6",
  "source": "0.0.0.0/0",
  "tcp-options": {
    "destination-port-range": {
      "max": 22,
      "min": 22
    }
  }
}

十、更新 Security List

执行:

/root/bin/oci network security-list update --security-list-id 你的security-list-id --ingress-security-rules file://rules.json

出现:

Are you sure you want to continue? [y/N]:

输入:

y

确认更新。


十一、验证是否成功

1. Linux 本地验证

curl http://127.0.0.1:25774

如果返回 HTML:

说明程序正常。


2. 检查监听端口

ss -tulnp

确认:

0.0.0.0:25774

存在。


3. 公网测试

浏览器访问:

http://公网IP:25774

如果可以打开:

说明:

OCI Security List 已成功放行。


十二、Linux 权限注意事项

OCI API 私钥建议:

chmod 600 xxx.pem

否则:

OCI CLI 会提示:

Permissions are too open

十三、一些运维经验总结

1. 修改安全组前先备份

例如:

cp rules.json rules.json.bak

2. SSH 永远不要只保留一个窗口

推荐:

  • 当前 SSH 不关闭

  • 新开一个 SSH 测试22是否正常

确认没问题再关闭旧窗口。


3. 少开放无用端口

原则:

最小暴露面

不用的端口:

建议关闭。


4. OCI CLI 比控制台稳定很多

尤其国内网络环境:

OCI 控制台容易:

  • 卡顿

  • 超时

  • 加载失败

CLI + API:

往往更加稳定。


十四、总结

通过:

  • SSH

  • OCI CLI

  • OCI API

即使不进入 OCI 控制台:

也可以:

  • 查询 Security List

  • 修改云防火墙

  • 开放公网端口

  • 管理 OCI 网络

本文为个人学习记录,转载请注明出处:[万俟季先生的个人博客](https://miloaether.loc.cc)

(https://blog.ivano.cyou)

评论交流

文章目录