甲骨文云免费服务器从注册到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 账户注册与验证:细节决定成败
甲骨文云的注册流程相对严格,这是为了防止资源被滥用。以下是关键步骤和避坑点:
环境与信息准备:
- 网络环境:建议使用干净、稳定的家庭或公司网络。尽量避免使用公共Wi-Fi或已被大量使用的代理出口IP,这类IP可能被甲骨文的风控系统标记,导致注册失败。
- 支付卡:这是验证环节的核心。你需要一张支持国际支付的信用卡(Visa, MasterCard等)。重要提示:甲骨文会进行1美元的预授权扣款(有的地区是1当地货币),这只是验证卡片有效性,不会真正扣费,通常几分钟到几小时内会撤销。请确保你的卡片开通了在线支付和国际支付功能。
- 个人信息:姓名、地址、电话需要真实有效。地址建议使用拼音填写,与国家地区保持一致。
注册流程:
- 访问Oracle Cloud官网,选择“免费注册”。
- 填写国家/地区、姓名、邮箱。邮箱建议使用Gmail、Outlook等国际邮箱,成功率相对更高。
- 填写地址和电话。
- 最关键的一步:验证支付方式。输入信用卡信息,完成1美元的预授权。
- 选择你的“主区域”(Home Region)。这个选择极其重要,因为它决定了你后续创建免费资源时所处的数据中心。一旦选定,主区域无法更改。建议选择离你地理位置较近、且传闻中资源较充裕的区域,例如“韩国首尔”、“日本东京”、“新加坡”等。你可以通过一些社区论坛了解当前各区域的资源释放情况。
注册后等待:
- 提交后,你可能会看到“您的账户正在处理中”的提示。这个过程可能需要几分钟到几小时,甚至一两天。请耐心等待验证邮件,期间不要重复提交。
注意:如果注册失败,最常见的原因是信用卡验证不通过(银行风控、卡片不支持预授权等)或IP地址被风控。可以尝试更换网络环境(如使用手机热点)或换一张信用卡再试。一个账户只需验证一次,后续不会再扣款,除非你升级为付费账户并产生了费用。
2.2 登录与资源可用性检查:避免白忙活
成功注册并登录后,别急着创建实例。首先,你需要确认你选择的“主区域”是否有免费的ARM计算资源(即A1 Flex实例)。因为AMD实例(E2.1.Micro)通常一直有货,但热门的ARM实例资源非常紧俏。
- 登录控制台:进入Oracle Cloud控制台,左上角会显示你当前所在的区域。确保它和你的“主区域”一致。
- 检查限额与使用情况:
- 点击左上角菜单 -> “治理与管理” -> “限额、使用情况和成本”。
- 在“服务”筛选框中,选择“计算”。
- 查看名为“始终免费AMD VM.Standard.E2.1.Micro实例计数”和“始终免费ARM VM.Standard.A1.Flex实例计数”的限额。通常前者是2,后者是4。
- 关键看“已使用”数量。如果“已使用”等于“限额”,说明该区域此类免费资源已全部被占用。你需要:
- 等待:有人删除实例后资源会释放,通常在整点(如0点、1点)释放的概率较大,需要“抢”。
- 换区域(需新账户):如果你还没创建任何资源,可以尝试注销,用新邮箱和新卡注册一个新账户,选择另一个可能资源更多的区域。
只有在确认有可用配额后,我们才能进行下一步。否则,你会卡在创建实例时无法选择ARM形状(Shape),或者根本看不到可用的“始终免费”标签。
3. 创建计算实例:核心配置详解
这是最核心的一步,配置选项众多,任何一个配置错误都可能导致后续无法连接。我们一步步来。
3.1 启动创建流程与基础配置
在控制台,点击“创建实例”按钮。
- 实例名称:给你的服务器起个名字,比如
my-free-server。这只是一个标识符。 - 放置:保持默认,无需更改。
- 镜像与形状:这是重点。
- 镜像(Image):选择操作系统。对于新手,推荐选择
Canonical Ubuntu 22.04或Oracle 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内存),点击“选择形状”。
- 镜像(Image):选择操作系统。对于新手,推荐选择
3.2 网络与SSH密钥配置:连接的生命线
这是导致ping不通和ssh失败的重灾区,请仔细阅读。
虚拟云网络(VCN)配置:
- 通常,你可以选择“创建新的虚拟云网络”和“创建新的公共子网”,系统会帮你自动配置好。但为了确保万无一失,我们手动检查一下。
- 点击“网络”部分旁边的“编辑”按钮。
- 确保“公共IPv4地址”被分配:这是一个必选项,系统默认会勾选“分配公共IPv4地址”。正是这个公网IP,让你能从外部访问这台服务器。
- 子网配置:在子网详情中,确保“子网访问”是“公共子网”,并且“安全列表”关联了默认的安全列表。
添加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文件内容),且格式正确,没有多余空格或换行。
- 本地生成密钥对(如果你还没有): 打开你的终端(Linux/Mac)或Git Bash(Windows),运行:
引导卷(硬盘):免费额度提供200GB的存储。你可以保持默认的47GB(对于Ubuntu)或调整到更大,只要总免费块存储不超过200GB即可。
3.3 高级选项:安全列表(防火墙)配置
这是另一个关键点。甲骨文云使用“安全列表”(Security List)作为虚拟防火墙来控制进出实例的流量。默认的安全列表规则非常严格,通常只开放了有限的端口(如SSH的22端口),但有时连ICMP协议(ping命令所用)都是关闭的,这就是为什么你创建后可能ping不通。
强烈建议在创建实例时或之后立即配置:
- 在创建实例页面,找到“网络”部分,点击“安全列表”旁边的“编辑”。
- 你会看到关联的默认安全列表。点击它旁边的“创建新安全列表”链接(或者记住名字,稍后去配置)。
- 我们需要添加两条入站(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
- 规则1:允许ICMP(用于ping)
- 保存这个安全列表,并在创建实例的页面选择它。
完成所有配置后,滚动到页面底部,点击“创建”。实例会开始供应,这个过程需要1-3分钟。
4. 连接实战:从Ping测试到SSH登录
实例状态显示“运行中”后,我们进入连接验证阶段。
4.1 获取连接信息与初步Ping测试
- 获取公网IP:在实例详情页面,找到“公共IP地址”并复制它。假设它是
123.123.123.123。 - 进行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 ssh和sudo ufw allow proto icmp。
4.2 使用SSH密钥登录:不同客户端的操作
能ping通后,我们尝试用SSH登录。这里以最常见的openssh-client为例。
基本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。
常见连接失败问题与解决:
错误:Permission denied (publickey).这是最高频的错误。意味着服务器拒绝了你的密钥。排查步骤:
- 确认用户名:确保用户名正确(ubuntu/opc)。
- 确认私钥路径和权限:确保
-i参数指定的路径正确。在Linux/Mac上,私钥文件权限必须非常严格,通常设置为600:chmod 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即可连接,极大提升了效率。
连接成功后的操作: 首次登录成功后,你应该立即做以下几件事:
- 更新系统:
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 实例状态异常与控制台连接
有时实例控制台显示“运行中”,但实际内部系统可能卡住了。此时,ping和ssh都会失败。
- 使用控制台连接:在实例详情页使用“控制台连接”功能,通过浏览器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服务器或各类自动化任务的绝佳试验场。免费资源的稳定性依赖于甲骨文的政策,但截至目前,这个项目对于技术爱好者来说,依然是性价比最高的选择之一。
