甲骨文云免费服务器从注册到SSH连接完整避坑指南

📅 2026/7/30 5:33:38 👁️ 阅读次数 📝 编程学习
甲骨文云免费服务器从注册到SSH连接完整避坑指南

1. 项目缘起:为什么是甲骨文云?

如果你在技术圈子里混过一段时间,肯定听说过“甲骨文云”(Oracle Cloud)的大名。它最吸引人的一点,就是提供了一个名为“始终免费套餐”(Always Free Tier)的服务。简单来说,你可以免费获得一台配置还不错的云服务器,并且只要你的账户正常,理论上可以一直免费用下去。这对于个人开发者、学生、或者想低成本搭建个人项目、学习Linux、部署小型应用的人来说,吸引力是巨大的。

我最初接触它,也是因为需要一个稳定的环境来跑一些自动化脚本和搭建个人博客。市面上虽然也有其他云服务商的免费试用,但大多有时限(比如1个月或12个月),或者配置比较低。甲骨文云的免费套餐,提供了2台AMD架构的虚拟机(VM.Standard.E2.1.Micro,1核1G内存)和4台ARM架构的虚拟机(VM.Standard.A1.Flex,最多可配4核24G内存),这个配置在免费云里算是相当“豪横”了。尤其是ARM实例,性能足够跑很多中型应用了。

但“免费”往往意味着门槛。甲骨文云的注册、开机器(他们叫“创建实例”)、网络配置到最终能用SSH连上去,这一路上坑点不少。很多人卡在注册验证,更多人卡在创建实例后ping不通或者ssh连不上,最后只能放弃。网上教程很多,但要么过时,要么语焉不详。所以,我想结合自己多次成功开通的经验,写一份尽可能详尽、能带你避开所有常见坑的实操指南。我们的目标很明确:从零开始,拿到一台可以稳定ping通并能用SSH连接的甲骨文云免费服务器。

2. 前期准备:成功注册与资源可用性确认

在动手创建实例之前,有两道必须跨过的坎:账户注册和资源可用性。这一步走不稳,后面全是白费功夫。

2.1 账户注册与验证:细节决定成败

甲骨文云的注册流程相对严格,这是为了防止资源被滥用。以下是关键步骤和避坑点:

  1. 环境与信息准备

    • 网络环境:建议使用干净、稳定的家庭或公司网络。尽量避免使用公共Wi-Fi或已被大量使用的代理出口IP,这类IP可能被甲骨文的风控系统标记,导致注册失败。
    • 支付卡:这是验证环节的核心。你需要一张支持国际支付的信用卡(Visa, MasterCard等)。重要提示:甲骨文会进行1美元的预授权扣款(有的地区是1当地货币),这只是验证卡片有效性,不会真正扣费,通常几分钟到几小时内会撤销。请确保你的卡片开通了在线支付和国际支付功能。
    • 个人信息:姓名、地址、电话需要真实有效。地址建议使用拼音填写,与国家地区保持一致。
  2. 注册流程

    • 访问Oracle Cloud官网,选择“免费注册”。
    • 填写国家/地区、姓名、邮箱。邮箱建议使用Gmail、Outlook等国际邮箱,成功率相对更高。
    • 填写地址和电话。
    • 最关键的一步:验证支付方式。输入信用卡信息,完成1美元的预授权。
    • 选择你的“主区域”(Home Region)。这个选择极其重要,因为它决定了你后续创建免费资源时所处的数据中心。一旦选定,主区域无法更改。建议选择离你地理位置较近、且传闻中资源较充裕的区域,例如“韩国首尔”、“日本东京”、“新加坡”等。你可以通过一些社区论坛了解当前各区域的资源释放情况。
  3. 注册后等待

    • 提交后,你可能会看到“您的账户正在处理中”的提示。这个过程可能需要几分钟到几小时,甚至一两天。请耐心等待验证邮件,期间不要重复提交。

注意:如果注册失败,最常见的原因是信用卡验证不通过(银行风控、卡片不支持预授权等)或IP地址被风控。可以尝试更换网络环境(如使用手机热点)或换一张信用卡再试。一个账户只需验证一次,后续不会再扣款,除非你升级为付费账户并产生了费用。

2.2 登录与资源可用性检查:避免白忙活

成功注册并登录后,别急着创建实例。首先,你需要确认你选择的“主区域”是否有免费的ARM计算资源(即A1 Flex实例)。因为AMD实例(E2.1.Micro)通常一直有货,但热门的ARM实例资源非常紧俏。

  1. 登录控制台:进入Oracle Cloud控制台,左上角会显示你当前所在的区域。确保它和你的“主区域”一致。
  2. 检查限额与使用情况
    • 点击左上角菜单 -> “治理与管理” -> “限额、使用情况和成本”。
    • 在“服务”筛选框中,选择“计算”。
    • 查看名为“始终免费AMD VM.Standard.E2.1.Micro实例计数”和“始终免费ARM VM.Standard.A1.Flex实例计数”的限额。通常前者是2,后者是4。
    • 关键看“已使用”数量。如果“已使用”等于“限额”,说明该区域此类免费资源已全部被占用。你需要:
      • 等待:有人删除实例后资源会释放,通常在整点(如0点、1点)释放的概率较大,需要“抢”。
      • 换区域(需新账户):如果你还没创建任何资源,可以尝试注销,用新邮箱和新卡注册一个新账户,选择另一个可能资源更多的区域。

只有在确认有可用配额后,我们才能进行下一步。否则,你会卡在创建实例时无法选择ARM形状(Shape),或者根本看不到可用的“始终免费”标签。

3. 创建计算实例:核心配置详解

这是最核心的一步,配置选项众多,任何一个配置错误都可能导致后续无法连接。我们一步步来。

3.1 启动创建流程与基础配置

在控制台,点击“创建实例”按钮。

  1. 实例名称:给你的服务器起个名字,比如my-free-server。这只是一个标识符。
  2. 放置:保持默认,无需更改。
  3. 镜像与形状:这是重点。
    • 镜像(Image):选择操作系统。对于新手,推荐选择Canonical Ubuntu 22.04Oracle Linux 8。它们社区支持完善,教程多。我以Ubuntu 22.04为例。
    • 形状(Shape):点击“更改形状”。
      • 在“筛选”中,勾选“始终免费 eligible”。
      • 你会看到两个选项:VM.Standard.E2.1.Micro (AMD)VM.Standard.A1.Flex (ARM)
      • 如何选择
        • AMD (E2.1.Micro):1核AMD EPYC CPU,1GB内存。性能较弱,但通常随时可开,稳定性好。适合跑轻量应用、学习命令。
        • ARM (A1.Flex)这是我们的首选。你可以自由配置OCPU数量和内存,但总容量不能超过4个OCPU和24GB内存的免费额度。例如,你可以开一台4 OCPUs + 24GB RAM的“满血”机器,也可以开两台2 OCPUs + 12GB RAM的机器。ARM架构,性能强劲,性价比极高,适合跑Docker、数据库、中型Web应用等。
      • 选择你想要的ARM配置(例如,4 OCPU, 24 GB内存),点击“选择形状”。

3.2 网络与SSH密钥配置:连接的生命线

这是导致ping不通和ssh失败的重灾区,请仔细阅读。

  1. 虚拟云网络(VCN)配置

    • 通常,你可以选择“创建新的虚拟云网络”和“创建新的公共子网”,系统会帮你自动配置好。但为了确保万无一失,我们手动检查一下。
    • 点击“网络”部分旁边的“编辑”按钮。
    • 确保“公共IPv4地址”被分配:这是一个必选项,系统默认会勾选“分配公共IPv4地址”。正是这个公网IP,让你能从外部访问这台服务器。
    • 子网配置:在子网详情中,确保“子网访问”是“公共子网”,并且“安全列表”关联了默认的安全列表。
  2. 添加SSH密钥:这是免密码登录服务器的唯一方式(对于免费实例)。甲骨文云不支持通过控制台设置密码登录,必须使用SSH密钥对。

    • 本地生成密钥对(如果你还没有): 打开你的终端(Linux/Mac)或Git Bash(Windows),运行:
      ssh-keygen -t rsa -b 2048 -C "your_email@example.com"
      按回车使用默认保存路径(~/.ssh/id_rsa),然后设置一个密码(可选,直接回车则为空密码)。 完成后,你会在~/.ssh/目录下得到两个文件:id_rsa(私钥,绝不可泄露)和id_rsa.pub(公钥)。
    • 复制公钥内容:用文本编辑器打开id_rsa.pub文件,复制其全部内容。它看起来像这样:ssh-rsa AAAAB3NzaC1yc2E... your_email@example.com
    • 粘贴到控制台:在创建实例页面的“添加SSH密钥”部分,选择“粘贴公钥”,然后将刚才复制的内容粘贴进去。务必确保粘贴的是公钥(.pub文件内容),且格式正确,没有多余空格或换行。
  3. 引导卷(硬盘):免费额度提供200GB的存储。你可以保持默认的47GB(对于Ubuntu)或调整到更大,只要总免费块存储不超过200GB即可。

3.3 高级选项:安全列表(防火墙)配置

这是另一个关键点。甲骨文云使用“安全列表”(Security List)作为虚拟防火墙来控制进出实例的流量。默认的安全列表规则非常严格,通常只开放了有限的端口(如SSH的22端口),但有时连ICMP协议(ping命令所用)都是关闭的,这就是为什么你创建后可能ping不通。

强烈建议在创建实例时或之后立即配置:

  1. 在创建实例页面,找到“网络”部分,点击“安全列表”旁边的“编辑”。
  2. 你会看到关联的默认安全列表。点击它旁边的“创建新安全列表”链接(或者记住名字,稍后去配置)。
  3. 我们需要添加两条入站(Ingress)规则:
    • 规则1:允许ICMP(用于ping)
      • 源类型:CIDR
      • 源CIDR:0.0.0.0/0(表示允许所有IP,出于学习目的可以这样设。生产环境建议限制)
      • IP协议:ICMP
      • 类型和代码:留空(表示所有类型)
    • 规则2:允许SSH(TCP 22端口)
      • 源类型:CIDR
      • 源CIDR:0.0.0.0/0(同上,生产环境应改为你的办公IP)
      • 目标端口范围:22
  4. 保存这个安全列表,并在创建实例的页面选择它。

完成所有配置后,滚动到页面底部,点击“创建”。实例会开始供应,这个过程需要1-3分钟。

4. 连接实战:从Ping测试到SSH登录

实例状态显示“运行中”后,我们进入连接验证阶段。

4.1 获取连接信息与初步Ping测试

  1. 获取公网IP:在实例详情页面,找到“公共IP地址”并复制它。假设它是123.123.123.123
  2. 进行Ping测试: 打开你的本地终端或命令提示符,输入:
    ping 123.123.123.123
    • 如果收到回复:恭喜,网络层是通的。这说明安全列表的ICMP规则生效了,实例网络配置基本正确。
    • 如果请求超时:这说明ping不通。别慌,这是最常见的问题。请按以下步骤排查:
      • 检查安全列表:回到控制台,找到实例所属子网关联的“安全列表”,确认已添加了允许ICMP的入站规则(如3.3节所述)。
      • 检查实例的防火墙:甲骨文云实例本身(如Ubuntu)可能启用了ufw防火墙。我们需要通过其他方式(比如控制台连接)来检查。在实例详情页,点击“控制台连接” -> “创建控制台连接”,设置一个登录密码,然后通过网页VNC登录。在虚拟机内部,运行sudo ufw status。如果状态是active,可以暂时禁用sudo ufw disable进行测试,或者更规范地,开放ICMP和SSH:sudo ufw allow sshsudo ufw allow proto icmp

4.2 使用SSH密钥登录:不同客户端的操作

ping通后,我们尝试用SSH登录。这里以最常见的openssh-client为例。

  1. 基本SSH命令: 在你的本地终端,使用以下命令连接:

    ssh -i ~/.ssh/id_rsa ubuntu@123.123.123.123
    • -i ~/.ssh/id_rsa:指定你本地保存的私钥文件路径。
    • ubuntu@:用户名。对于Ubuntu镜像,默认用户是ubuntu。对于Oracle Linux镜像,默认用户是opc。对于其他镜像,请查阅甲骨文文档。
    • 123.123.123.123:你的实例公网IP。
  2. 常见连接失败问题与解决

    • 错误:Permission denied (publickey).这是最高频的错误。意味着服务器拒绝了你的密钥。排查步骤:

      • 确认用户名:确保用户名正确(ubuntu/opc)。
      • 确认私钥路径和权限:确保-i参数指定的路径正确。在Linux/Mac上,私钥文件权限必须非常严格,通常设置为600chmod 600 ~/.ssh/id_rsa
      • 确认公钥已注入:通过控制台VNC登录实例,检查~/.ssh/authorized_keys文件内容,看是否包含你之前粘贴的公钥。如果没有,需要手动添加。
      • 检查安全列表:确保安全列表的入站规则允许TCP 22端口(见3.3节)。
    • 错误:Host key verification failed.这是因为本地已知主机记录(~/.ssh/known_hosts)中已有该IP对应的旧密钥。解决方法:使用ssh-keygen -R 123.123.123.123命令删除旧记录,再重新连接。

    • 使用SSH Config简化连接(高级技巧): 为了避免每次输入冗长的命令,可以在本地的~/.ssh/config文件(没有则创建)中添加如下配置:

      Host oracle-free HostName 123.123.123.123 User ubuntu IdentityFile ~/.ssh/id_rsa Port 22

      保存后,以后只需要输入ssh oracle-free即可连接,极大提升了效率。

  3. 连接成功后的操作: 首次登录成功后,你应该立即做以下几件事:

    • 更新系统sudo apt update && sudo apt upgrade -y(Ubuntu/Debian) 或sudo dnf update -y(Oracle Linux)。
    • 修改SSH端口(可选但建议):为了安全,可以修改默认的22端口,减少被自动化脚本扫描攻击的风险。修改/etc/ssh/sshd_config文件中的Port项,并重启sshd服务。切记,在防火墙和安全列表中同步开放新端口!
    • 创建新用户并禁用root/默认用户SSH(可选):进一步提升安全性。

5. 疑难杂症与深度排错

即使按照上述步骤,你可能还是会遇到奇怪的问题。这里分享一些更深层的排查思路。

5.1 实例状态异常与控制台连接

有时实例控制台显示“运行中”,但实际内部系统可能卡住了。此时,pingssh都会失败。

  • 使用控制台连接:在实例详情页使用“控制台连接”功能,通过浏览器VNC登录。这能让你看到实例启动过程的真实画面。
  • 检查系统日志:在控制台连接里,你可以查看系统启动信息。常见问题包括:文件系统损坏、内核panic、cloud-init配置错误(导致SSH密钥未注入)。如果看到错误信息,可以据此搜索解决方案。
  • 重启实例:尝试在控制台停止实例,再启动。有时可以解决临时性的问题。

5.2 安全列表与网络网关的微妙影响

甲骨文云的虚拟网络架构比想象中复杂。除了“安全列表”,还有一个叫“网络安全组”(Network Security Group, NSG)的概念,它功能更强大。如果你的子网同时关联了安全列表和NSG,两者的规则是叠加的,且取更严格的那个

  • 排查建议:创建实例时,如果选择了自定义的VCN和子网,请务必检查子网关联的所有安全策略(安全列表和NSG),确保它们都放行了必要的端口(22, ICMP)。
  • 路由表检查:极少数情况下,需要检查子网关联的路由表,确保有指向“互联网网关”的默认路由(0.0.0.0/0 -> igw_id)。创建公共子网时,系统通常会默认配置好。

5.3 SSH服务本身的问题

通过控制台连接进入系统后,可以检查SSH服务状态:

sudo systemctl status sshd # 或 sudo systemctl status ssh

查看服务是否在运行。如果没有,尝试启动它:sudo systemctl start sshd

检查SSH配置文件/etc/ssh/sshd_config,确保没有设置PasswordAuthentication yes以外的限制性参数(如AllowUsers未包含当前用户,或PermitRootLogin被禁用而你正尝试用root登录)。

5.4 关于IPv6的潜在问题

甲骨文云免费实例也会分配一个IPv6地址。如果你的本地网络支持IPv6,并且实例的安全列表/NSG没有配置IPv6规则,可能会导致连接行为不一致。一个稳妥的做法是,在安全列表中,为ICMP和SSH规则同时指定IPv4 CIDR (0.0.0.0/0) 和 IPv6 CIDR (::/0),或者暂时在本地客户端强制使用IPv4连接,在SSH命令中添加-4参数:ssh -4 -i ...

走到这里,你应该已经成功拥有一台可以稳定访问的甲骨文云免费服务器了。从注册、抢资源、配置实例、打通网络到SSH登录,整个过程是对云平台基础概念的一次完整实践。这台机器可以作为你学习Linux、部署Web应用(配合Nginx/Apache)、运行Docker容器、搭建Git服务器或各类自动化任务的绝佳试验场。免费资源的稳定性依赖于甲骨文的政策,但截至目前,这个项目对于技术爱好者来说,依然是性价比最高的选择之一。