Oracle Cloud Ubuntu 实例安装宝塔面板记录

举报
qinrui 发表于 2026/10/10 12:18:34 2026/10/10
【摘要】 Oracle Cloud Ubuntu 实例安装宝塔面板记录日期:2026-10-10 背景在 Oracle Cloud 上开了一台 Ubuntu 实例,本地是 Windows 11。实例使用自行上传的 SSH 密钥登录,计划安装宝塔面板,并把面板端口改为 8888、安全入口改为 /portal。安装完成后遇到端口无法访问的问题,最终定位到 Oracle 镜像自带的 iptables 规则...

Oracle Cloud Ubuntu 实例安装宝塔面板记录

日期:2026-10-10

背景

在 Oracle Cloud 上开了一台 Ubuntu 实例,本地是 Windows 11。实例使用自行上传的 SSH 密钥登录,计划安装宝塔面板,并把面板端口改为 8888、安全入口改为 /portal。安装完成后遇到端口无法访问的问题,最终定位到 Oracle 镜像自带的 iptables 规则。

1. 连接实例

私钥放在 Windows 11 的默认 SSH 目录:

C:\Users\你的用户名\.ssh

将私钥改名为 id_rsa 后,直接连接:

ssh ubuntu@实例公网IP

Ubuntu 镜像默认用户名是 ubuntu,连接成功后即可在服务器上操作。

2. 安装宝塔面板

安装前先更新系统并安装依赖:

sudo apt update && sudo apt upgrade -y
sudo apt install -y wget curl gcc make

从宝塔官网获取 Ubuntu 安装脚本,保存为 install.sh。下载脚本时不要加 sudo,避免文件被下载到 /root 目录。然后执行安装:

sudo bash install.sh

安装过程中按提示输入 y 确认。安装完成后,终端会显示面板地址、用户名和密码,需要立即保存。

3. 修改面板端口与安全入口

安装完成后,将面板端口改为 8888,安全入口改为 /portal。此时浏览器访问地址格式为:

实例公网IP:8888/portal

注意安全入口区分大小写,浏览器建议用无痕模式访问,避免缓存旧地址。

4. 访问失败与排查

浏览器访问时提示连接被关闭。用端口检测工具测试,发现:

  • 22 端口通
  • 8888 端口不通

先在服务器上检查 UFW:

sudo ufw status verbose

输出显示 8888/tcp 已经放行,说明 UFW 不是问题。继续检查 iptables:

sudo iptables --list --line-numbers

关键输出如下:

Chain INPUT (policy DROP)
num  target     prot opt source               destination
1    ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
2    ACCEPT     icmp --  anywhere             anywhere
3    ACCEPT     all  --  anywhere             anywhere
4    ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:ssh
5    REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited
6    ufw-before-logging-input  all  --  anywhere             anywhere
7    ufw-before-input  all  --  anywhere             anywhere
...

问题很明确:INPUT 链的默认策略是 DROP,第 5 条是 REJECT all,而 UFW 的规则链排在第 6 条之后。也就是说,除了 SSH 和已建立连接,其他新入站流量在第 5 条就被拒绝了,根本走不到 UFW 的放行规则。

5. 解决方案

有两种处理方式。

方案一:在 REJECT 之前插入放行规则

例如放行 8888:

sudo iptables -I INPUT 5 -p tcp --dport 8888 -j ACCEPT

然后保存:

sudo apt install -y iptables-persistent
sudo netfilter-persistent save

这种方式保留 Oracle 镜像自带的 iptables 层,但每开一个端口都要手动插入规则,比较麻烦。

方案二:删除 REJECT,让 UFW 单独接管(推荐)

既然已经启用了 UFW,Oracle 镜像自带的那条 REJECT all 就有些多余,而且会架空 UFW。可以直接删除:

sudo iptables -D INPUT 5

确认规则已删除:

sudo iptables --list INPUT --line-numbers

保存规则:

sudo netfilter-persistent save

之后只需要维护 UFW 放行规则即可。INPUT 链默认策略仍是 DROP,未放行的端口依然无法访问,安全性没有降低。

6. Oracle 安全列表必须单独放行

除了服务器内部的 UFW 和 iptables,Oracle Cloud 还有一层平台级防火墙:安全列表。每开一个端口,都要在 OCI 控制台添加入站规则。

路径:

网络 -> 虚拟云网络 -> 你的 VCN -> 安全列表 -> 默认安全列表 -> 入站规则

添加规则示例:

  • 源 CIDR:0.0.0.0/0
  • IP 协议:TCP
  • 目标端口范围:8888

如果只改了 UFW 和 iptables,安全列表没放行,外部依然访问不了。

7. 后续 80、443 端口的处理

如果采用方案二,后续开放 80 和 443 只需要两步。

第一步,在服务器上放行 UFW:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload

第二步,在 Oracle 安全列表中添加入站规则:

  • TCP 80
  • TCP 443

不需要再手动修改 iptables。

8. 总结

这次安装宝塔面板遇到的核心坑点是:Oracle Cloud 的 Ubuntu 镜像自带 iptables 规则,其中 INPUT 链里的 REJECT all 会拦截所有未被前面规则放行的新流量。即使 UFW 已经放行 8888,流量也会在到达 UFW 之前被拒绝。

推荐做法是删除 iptables 中的那条 REJECT 规则,让 UFW 单独接管服务器防火墙。之后每开一个端口,只需要:

  1. UFW 放行;
  2. Oracle 安全列表放行。

最后,妥善保存 SSH 私钥、宝塔面板地址、用户名和密码,并建议在 Oracle 计费和成本管理中设置预算预警,避免产生意外费用。

Q&A

Q1:Oracle Cloud Ubuntu 实例安装宝塔面板后,8888 端口不通怎么办?

先检查 Oracle 安全列表是否放行 TCP 8888,再检查服务器 UFW 是否放行 8888。如果这两处都正常,大概率是 Oracle 镜像自带的 iptables 规则拦截了流量。执行 sudo iptables --list --line-numbers,查看 INPUT 链中是否有 REJECT all 规则位于 UFW 规则之前。如果有,需要在 REJECT 之前插入 8888 的 ACCEPT 规则,或者直接删除那条 REJECT。

Q2:为什么 UFW 已经放行 8888 端口,外部仍然无法访问?

因为 Oracle Cloud 的 Ubuntu 镜像默认会在 iptables 的 INPUT 链中加一条 REJECT all,它的位置在 UFW 规则链之前。流量到达 iptables 后,如果没有匹配到前面的 ACCEPT 规则,就会直接被 REJECT 掉,根本走不到 UFW 的放行规则。所以只改 UFW 不够,必须同时处理 iptables 和 Oracle 安全列表。

Q3:Oracle Cloud 的安全列表在哪里设置?

登录 OCI 控制台,进入“网络” -> “虚拟云网络” -> 选择你的 VCN -> “安全列表” -> 默认安全列表 -> “入站规则”。在这里添加规则,例如源 CIDR 0.0.0.0/0、IP 协议 TCP、目标端口范围 8888。安全列表是云平台层面的防火墙,优先级最高,每开一个端口都要单独放行。

Q4:如何删除 iptables 中的 REJECT 规则?

先执行 sudo iptables --list INPUT --line-numbers 找到 REJECT all 所在的行号,例如第 5 条。然后执行 sudo iptables -D INPUT 5 删除。删除后再次查看确认,并执行 sudo netfilter-persistent save 保存规则,防止重启后恢复。

Q5:删除 iptables 的 REJECT 规则安全吗?

安全。删除后 INPUT 链的默认策略仍然是 DROP,未放行的端口依然无法访问。流量会正常进入 UFW 的规则链,由 UFW 决定是否放行。这样只是去掉了重复的拦截层,让 UFW 单独接管,既简化管理,也不会降低安全性。

Q6:Oracle Cloud ARM 实例免费额度是多少?

Oracle Cloud 永久免费的 ARM 实例(Ampere A1)额度为:2 OCPU、12 GB 内存,每月 1500 OCPU 小时和 9000 GB 小时。可以灵活分配,例如创建一个 1 OCPU + 6 GB 的实例,只消耗一半免费额度。升级为付费账户后,免费额度不变,超出部分按量计费。

Q7:如何连接 Oracle Cloud 的 Ubuntu 实例?

在 Windows 11 上,将私钥放到 C:\Users\你的用户名\.ssh 目录,改名为 id_rsa,然后执行 ssh ubuntu@实例公网IP。如果私钥文件名不是默认名,可以用 ssh -i "私钥路径" ubuntu@实例公网IP 指定。Ubuntu 镜像默认用户名是 ubuntu。

Q8:宝塔面板修改端口和安全入口后,访问地址是什么?

访问地址格式为 http://实例公网IP:端口/安全入口。例如端口改为 8888、安全入口改为 /portal,则访问 http://实例公网IP:8888/portal。安全入口区分大小写,建议用无痕模式访问,避免浏览器缓存旧地址。

Q9:后续开放 80、443 端口需要改 iptables 吗?

如果已经删除了 iptables 中的 REJECT 规则,就不需要再改 iptables。只需要在 UFW 中执行 sudo ufw allow 80/tcp 和 sudo ufw allow 443/tcp,并在 Oracle 安全列表中添加入站规则即可。如果保留了 REJECT 规则,则每开一个端口都要在 iptables 中手动插入 ACCEPT 规则。

Q10:如何保存 iptables 规则防止重启丢失?

安装 iptables-persistent:sudo apt install -y iptables-persistent,安装过程中选择 Yes 保存当前 IPv4 和 IPv6 规则。之后每次修改 iptables 后,执行 sudo netfilter-persistent save 即可持久化保存。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。