免费 Ubuntu VPS:创建实例并验证 SSH
使用符合 Oracle Always Free 条件的实例,创建一台可通过公网管理的 Ubuntu Linux VPS。本教程从保存 SSH 密钥开始,直到从电脑验证登录。前提是账号已获准使用、有可用容量,并且所选资源还有足够剩余免费用量。
VPSuntu · 更新: · 约 6 分钟阅读
本页目录
确认账号权限和目标配置
本例在账号主区域创建一台 AMD VM.Standard.E2.1.Micro,配备 1 GB RAM,使用 Ubuntu 24.04 LTS x86 镜像。这是小型管理练习环境,不是实测容量建议。Oracle 将 Ubuntu 列为可用镜像,但具体镜像与机型是否享受免费待遇,仍要在控制台确认。
你需要管理实例、网络和控制台连接的权限,电脑上也应安装 OpenSSH。本机命令使用 Linux、macOS 或 WSL shell。注册、资源容量和持续可用性均无保证,闲置实例可能回收。开始前先比较免费用量与试用计划。
先保存密钥,再创建实例
在自己的电脑执行以下命令。如果文件名已被占用,换一个名称并在后续步骤中一致使用,不要覆盖已有密钥。按提示设置密钥口令。
mkdir -p ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t rsa -b 3072 -f ~/.ssh/oci-ubuntu-free
chmod 600 ~/.ssh/oci-ubuntu-free
cat ~/.ssh/oci-ubuntu-free.pub安全保存私钥,创建实例时只上传 .pub 公钥。用户公钥决定谁可以登录;稍后核对的主机密钥用于确认连接的是哪台服务器,它们不是同一把密钥。
建立资源清单,记录 compartment、地域、实例名称和标识。示例名 ubuntu-free-ssh 只用于这次新实验;在 OCI 中,仅凭名称未必能唯一定位资源。
建立公网子网,仅允许自己的 SSH 来源
在 Networking 中为实验创建专用 VCN,例如 10.20.0.0/16,再创建区域公网子网,例如 10.20.1.0/24。如果将来需要接入现有网络,选择不重叠的网段。在该 VCN 内创建并启用互联网网关。
在子网关联的路由表添加目的地址 0.0.0.0/0,目标为这个互联网网关。实例还必须分配公网 IPv4,路由本身不会提供公网地址。
在子网安全列表添加有状态入站规则:来源 CIDR 为你当前公网 IPv4 加 /32,协议 TCP,来源端口 All,目标端口 22。这里应使用互联网看到的地址,而不是私人 Wi-Fi 地址。保留必需的默认出站及 ICMP 规则。
替换这份专用列表里默认面向所有来源的 SSH 规则。更窄的新规则不会覆盖另一条宽松规则,因此要检查所有关联安全列表和 NSG。本例不创建 NSG、NAT 网关或负载均衡器。电脑公网地址变化后,相应更新 /32。
创建符合免费条件的 Ubuntu 实例
切换到主区域,进入 Compute、Instances、Create instance,使用 ubuntu-free-ssh 名称并选择目标 compartment。创建前逐项确认:
小屏幕上可左右滚动表格,查看完整内容。
| 设置项 | 本教程选择 |
|---|---|
| 镜像 | 符合条件的 Canonical Ubuntu 24.04 LTS x86/amd64 平台镜像 |
| 机型 | VM.Standard.E2.1.Micro,AMD,1 GB RAM |
| 启动卷 | 50 GB;保留适用性能设置并核对剩余免费用量 |
| 网络 | 本实验专用公网子网,分配公网 IPv4 |
| SSH 密钥 | 上传 oci-ubuntu-free.pub 公钥 |
| 附加项 | 不加额外卷、付费镜像软件或可选管理服务 |
Oracle 文档中的 Always Free 启动卷/块存储在主区域合计为 200 GB,已有卷也要计入。核对每个资源的资格和估价;试用额度抵扣了费用,不代表持续免费。若有疑问,先看免费计划限制与计费清单。
将下面内容保存为本地文本文件,通过 Advanced options、Management、Initialization script 上传。它让 cloud-init 在控制台输出公开主机密钥和指纹,供后续核验,文件中没有私钥。
#cloud-config
ssh:
emit_keys_to_console: true完成检查后再创建实例。如果免费机型没有可用容量,先停下来重新评估,不要误选付费替代项。状态为 Running 后,在详细信息中记录实例 OCID、启动卷 OCID 和公网 IPv4。
从可信控制台历史核对主机指纹
接受第一次 SSH 提示前,登录 OCI Console,打开准确的目标实例。在 OS Management 或 Resources 中进入 Console connection,再选择 Launch Cloud Shell connection。这会建立抓取控制台历史所需的连接,账号必须有相应权限。
进入 Console history,选择 View current history,保存或下载首次启动输出。找到 cloud-init 生成的 SSH HOST KEY FINGERPRINTS,记录虚拟机主机密钥的 SHA256 指纹和密钥类型,不要混同已授权用户公钥的指纹。
Console connection 资源上显示的指纹用于认证 OCI 控制台端点,不是普通 SSH 登录的虚拟机端点。下一步使用的是启动输出中的虚拟机主机密钥。如果找不到这条记录,先按照 OCI 文档的控制台恢复流程处理,不能拿未经验证的 ssh-keyscan 输出代替。
从电脑登录并检查系统
在工作站终端运行下列命令,将文档示例地址 203.0.113.20 换成实例公网 IPv4。核对 SSH 提示的密钥类型和 SHA256 指纹,只有与可信启动记录相符才接受。
ssh -o StrictHostKeyChecking=ask -i ~/.ssh/oci-ubuntu-free ubuntu@203.0.113.20Ubuntu 平台镜像的用户名是 ubuntu,不是 opc。登录后,在 VPS 执行这些只读检查:
cloud-init status --wait
cat /etc/os-release
dpkg --print-architecture
free -h
df -h /
sudo ss -lntp
sudo iptables -S确认初始化已经完成,系统为 Ubuntu 24.04、架构为 amd64、内存和磁盘配置符合预期,而且 SSH 正在监听。电脑成功登录证明这条公网 SSH 路径可用,不代表已经验证应用容量,也没有发布 HTTP 网站。
更新系统,但不要替换镜像防火墙
等 cloud-init 成功完成后,刷新软件包信息,先查看升级内容再确认:
sudo apt update
sudo apt upgrade保留原会话,再验证一次新 SSH 登录。若更新要求重启,在实例仍可丢弃时执行 sudo reboot,恢复后重新连接并重复基本检查。重启会主动断开 SSH。
不要在这个 OCI Ubuntu 镜像安装或启用 UFW。Oracle 和 Canonical 都说明了它与持久化防火墙配置及关键 iSCSI 规则的冲突。保留原有规则。以后部署网站时,需要同时允许 OCI 网络访问,并使用兼容的虚拟机内部规则开放对应端口。
小屏幕上可左右滚动表格,查看完整内容。
| 故障 | 优先检查 |
|---|---|
| SSH timeout | 公网 IPv4、网关路由、当前来源 /32 及全部网络规则 |
| Permission denied (publickey) | ubuntu 用户名、使用的私钥和上传公钥 |
| 主机密钥不匹配 | 实例身份及可信启动记录;不要盲目删除 known_hosts |
| 初始化或软件包错误 | 控制台历史、cloud-init 状态与软件源连通性 |
如果仍无法访问,带着准确错误信息和可信控制台进入SSH 诊断流程,缩小问题范围时保持镜像防火墙完整。
下一步可使用网站部署教程,继续遵守其中的服务商专用防火墙要求。
保留可恢复副本,或结束这个实验
依赖实例之前,把应用数据和重建笔记放在服务器外,并测试恢复,让免费实例消失后重要工作仍可恢复。前面的检查只是验证管理访问,不是生产就绪认证。
实例中已有网站文件时,在另一台电脑练习文件备份恢复。它只验证选择的文件,不能替代其他应用数据的恢复计划。
实验结束先导出必要内容。在已记录的 compartment 中,按 OCID 找到确切的 ubuntu-free-ssh 实例并选择 Terminate。启动卷默认保留;只有确认该特定卷不再需要且导出已验证,才选择永久删除。
对照清单检查保留卷、备份、地址和控制台连接。确定没有其他资源使用后,才移除专用子网和网关。不要为清理一次实验而做全账号删除,完成后再次检查剩余资源和用量。
常见问题
这是公网服务器还是电脑里的 Ubuntu 虚拟机?
这是服务商托管、拥有公网地址的 VM。SSH 刻意限制为你的电脑公网 IP,实例运行不依赖自己的电脑一直开机。
免费机型没有可用容量怎么办?
可以等待,或评估另一项有官方说明的计划。不能假设其他机型、地域或更大配置也免费。比较指南会说明选项,但不保证审核通过或资源可用。