如果你是第一次接触 AWS,EC2 大概率是你最先遇到的服务。它的全称是 Amazon Elastic Compute Cloud,简单说就是云上的一台虚拟服务器,你可以在上面跑网站、跑脚本、跑数据库,几乎什么都能干。
但新手第一次用 EC2,碰到启动失败或者连不上的情况,往往会觉得无从下手。这篇按实际操作流程来,从零开始走一遍创建、连接和基本的故障排查。
一、创建 EC2 实例:最关键的那几步
创建 EC2 实例的入口在 EC2 控制台,点橘色的「启动实例」按钮就行。AWS 官方文档有一份专门给初学者的教程,手把手教你跑通第一个实例 。
这里面有几个配置项要特别留意:
1. 名称
在「名称和标签」里给实例起个名字,比如 my-first-server。不填也能启动,但后续实例多了会分不清 。
2. AMI(操作系统镜像)
AMI 决定了实例启动后装的是什么操作系统。新手建议选「快速启动」里的 Amazon Linux 2023,标了「符合免费套餐资格」的版本最好。也可以选 Ubuntu,区别在于默认用户名和包管理工具 。
不同 AMI 的默认用户名不一样,记一下这个,后面 SSH 连接的时候要用 :
AMI默认用户名Amazon Linuxec2-userUbuntuubuntuRHELec2-user 或 rootDebianadmin
3. 实例类型
实例类型决定了这台服务器的 CPU 和内存配置。新手选 t2.micro 或 t3.micro 就够了,都在免费套餐范围内 。
4. 密钥对
这是最容易被忽略的一步。密钥对相当于服务器的「门禁卡」——没有它,你就连不进服务器。在「密钥对(登录)」那里选「创建新密钥对」,起个名字,类型选 RSA,格式选 .pem,然后下载保存到本地。这个文件丢了就找不回来了 。
控制台有个选项叫「继续操作但不提供密钥对」,AWS 官方明确标注「不推荐」。选了之后,你就没法用 SSH 正常连接实例了 。
5. 网络设置
默认会使用你的默认 VPC,安全组会开放一条允许从任何 IP 访问的规则。对于 SSH(端口 22),生产环境不建议用 0.0.0.0/0,但学习阶段问题不大。更好的做法是选「自定义」,只填你自己当前的公网 IP 。
配置完成后点「启动实例」,等几秒钟就会看到成功提示。实例状态会先显示 pending,过一会儿变成 running,同时状态检查显示「2/2 检查通过」,才算是真正可用了 。
二、连接到实例:SSH 和 EC2 Instance Connect
实例跑起来之后,下一步就是连进去操作。
方法一:SSH(最常用)
在 EC2 控制台的实例列表里选中实例,点「连接」,切换到「SSH 客户端」标签页,会看到一条类似这样的命令:
bash
ssh -i /path/to/your-key.pem ec2-user@ec2-xx-xx-xx-xx.compute-1.amazonaws.com其中 -i 后面是私钥文件的路径,ec2-user 是用户名(根据 AMI 类型调整),后面是实例的公有 DNS 或 IP 。
如果用的是 Linux 或 macOS,连之前先给私钥文件设个权限:
bash
chmod 400 /path/to/your-key.pemWindows 用户如果没装 SSH 客户端,可以安装 OpenSSH,或者用 PuTTY 。
方法二:EC2 Instance Connect(免配置密钥)
如果私钥文件弄丢了,或者不想折腾命令行,可以用 EC2 Instance Connect。在控制台选中实例,点「连接」,选「EC2 Instance Connect」标签页,再点「连接」就能直接打开一个浏览器里的终端。前提是实例得在运行中且状态检查通过 。
三、常见启动失败场景
EC2 启动失败的情况五花八门,但新手遇到的无非这几类:
1. 容量不足
报错类似 InsufficientInstanceCapacity。意思是 AWS 当前可用区里没有足够的资源来启动你选的实例类型。不是你的问题,是 AWS 那边的。等几分钟再试,或者换个可用区 。
2. 实例数超配额
报错类似 InstanceLimitExceeded。每个 AWS 账号在每个区域都有实例数量的默认上限(一般是 5 个)。如果开太多机器就会遇到这个。去 Service Quotas 控制台申请提高限制,或者删掉不用的实例 。
3. 权限不足
报错类似 You are not authorized to perform this operation。用 IAM 用户登录时没有 ec2:RunInstances 权限。回到 IAM 控制台给这个用户附加对应的策略 。
4. AMI 和实例类型架构不匹配
如果选的实例类型是 ARM 架构(比如 Graviton),但 AMI 是 x86_64 的,就会启动失败。在选 AMI 的时候注意看一下架构是否匹配 。
四、连接失败的排查思路
如果实例显示 running 但就是连不上,按这个顺序查:
第一步:检查安全组
安全组相当于防火墙。检查实例关联的安全组里,有没有允许你的 IP 访问端口 22(SSH)的入站规则。如果安全组没有任何入站规则,SSH 连接会直接超时 。
第二步:检查实例有没有公网 IP
如果实例只有私有 IP,没有公网 IP,外网是连不进去的。确认在启动时开启了「自动分配公网 IP」,或者后面绑定了弹性 IP 。
第三步:检查路由表
子网需要有一条指向互联网网关(IGW)的路由,才能让公网流量进来。去 VPC 控制台检查子网关联的路由表,看看有没有 0.0.0.0/0 → igw-xxx 这条规则 。
第四步:检查网络 ACL
网络 ACL 是子网级别的防火墙。它跟安全组不一样,是无状态的,入站规则和出站规则得分别配。如果入站允许了 SSH,但出站没有允许返回流量,一样连不上 。
第五步:确认私钥文件没问题
如果报错 unable to load key 或 Permission denied (publickey),可能是私钥文件权限不对,或者用了错误的密钥对。确保 chmod 400 做过,并且确实是创建实例时下载的那一对 。
第六步:试试停止再启动
如果以上都检查了还是连不上,可以试试「停止」再「启动」实例。Stop/Start 和 Reboot 不一样——Stop/Start 会让实例迁移到新的物理宿主机,有时候底层硬件或网络配置的问题就能自动修复 。
如果所有方法都不行,还有一个备用方案:用 AWS Systems Manager Session Manager 连进去,它不依赖 SSH 端口和公网 IP 。
五、别忘了「打扫房间」
EC2 实例只要处于 running 状态,就会持续计费,哪怕你什么都没干。测试完成后,选中实例,点「实例状态」→「终止实例」。终止是不可逆的,数据会丢,所以确认不再需要再操作 。
如果只是暂时不用,可以选「停止实例」——停止后不会产生实例费用,但 EBS 存储卷还会收费 。
EC2 是 AWS 最基础也最重要的服务。第一次上手遇到问题很正常,关键在于知道从哪里查——状态转换原因、安全组、路由表、公网 IP,把这几个地方排查一遍,大部分问题都能找到答案。