很多人第一次打开 AWS 控制台时,面对“启动实例”按钮的感觉其实是又兴奋又懵的——明明文档里写得很清楚,但真到自己操作,一会儿是密钥对不会选,一会儿是安全组没放行导致连不上,更别提一觉醒来发现账单多了几十美元的经典剧情。EC2 作为 AWS 最基础也最常用的计算服务,本质上就是一台可以随时开、随时关的云端 Linux/Windows 服务器,但新手入门踩坑的概率实在太高。这篇文章我会用 6 个核心步骤把流程完整走一遍,从账号准备一直讲到实例连上后的安全收尾,每一处都附带我自己的踩坑记录,适合完全没碰过 AWS 的人,也适合已经点过几次启动实例但总在细节上出问题的朋友。
1. 账号准备和区域选择:这两个决定你后面会不会被坑
很多新手教程会把账号准备一笔带过,但根据我帮别人排查问题的经验,超过一半的 EC2 入门问题其实出在“账号状态”或“区域选错”上。注册 AWS 账号本身不复杂,你需要一张支持外币支付的信用卡做身份校验,注册过程会扣 1 美元左右的验证金(随后退回)。要注意的是注册完成后,强烈建议不要直接用根账号操作,而是创建一个 IAM 用户用于日常管理。这一步是为了防止你的主账号密钥泄露导致整个账户被劫持——在安全圈里这种事不算罕见,一旦根账号的 Access Key 泄露,对方可以瞬间刷爆你的账单。
1.1 区域(Region)为什么这么重要
EC2 实例并不是“一个AWS哪都能用”,而是分散在全球十几个物理区域里的。选择区域时,你实际上同时决定了 4 件事:
- 网络延迟:实例离你的目标用户越近,访问速度越快。
- 价格:不同区域的同类实例价格可能相差接近一倍。
- 功能可用性:有些新实例类型、新功能只在少数区域开放。
- 外网 IP 归属地:实例公网 IP 所属的国家或地区会影响你服务的合规性和访问体验。
新手最常见的错误是:注册完顺手选了默认的美东区域(例如 us-east-1),结果自己人都在国内,连接延迟高不说,某些场景下网络连通也不稳定。我的建议是,如果没有特殊合规要求,第一台学习用实例选亚太区域就好(像东京、新加坡这类),既能兼顾速度,AWS 在这个区域的文档和案例也最丰富。区域在启动实例后是不能直接“切换”的,必须在新区域重新启动实例,所以一开始就选对能省很多转移数据的功夫。
提示:可以顺便在你常用的区域开启 AWS 的“账单预警”功能,后面我会再展开讲控制成本的建议,但这东西越早设越好。
1.2 给“新手的第一个IAM用户”配最小权限
创建 IAM 用户不用纠结太多,给一个 AmazonEC2FullAccess 权限就够了,过强的管理员权限对这个阶段没必要,反而增加误操作的风险。在 IAM 控制台创建用户时选择“编程访问”+“控制台访问”都可以,但如果你只是用网页操作,勾选“控制台访问”并设置好密码即可。
登录时使用“账户ID或别名 + IAM 用户名 + 密码”的方式。新手很容易卡在这一步:登录地址、账户 ID 不知道去哪找。其实你把鼠标悬停在右上角你的账号昵称上,下拉菜单里就能看到“账户ID”,登录链接形如 https://你的账户ID.signin.aws.amazon.com/console。这个链接最好存到浏览器书签里,因为你以后每次登录都要走它,而不是打开 AWS 官网根域名再东找西找。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 从选择系统镜像到实例规格:别让“免费套餐”成为唯一决策依据
启动实例的第一步是选 Amazon Machine Image(AMI,系统镜像),它决定了你的云端服务器装的是哪个操作系统和预装环境。AWS 官方提供的 Amazon Linux 2023 和 Ubuntu Server 是我最推荐给新手的两个选择。Amazon Linux 的优势是跟 AWS 的集成度最高,里面预装了很多 AWS CLI 相关的工具,驱动和内核也都是针对 AWS 优化过的;Ubuntu 则胜在社区资料海量,遇到问题搜到的解决方案最多,而且很多第三方软件默认首发的就是 Ubuntu 版。
2.1 看不懂实例类型命名规则?一张表搞定
实例类型看起来像天书一样(比如 t3.micro、m5.large),但拆开看其实有固定规律。以 t3.micro 为例,我们可以拆成三部分:
| 部分 | 含义 | 你的理解方式 |
|---|---|---|
| t | 实例家族 | t=低成本入门通用型,m=通用均衡型,c=计算优化型,r=内存优化型 |
| 3 | 代次 | 数字越大通常性能越好,属于同一家族内的迭代版本 |
| micro | 规格大小 | nano < micro < small < medium < large,规格越大CPU内存越多 |
新手最值得关注的是 t 系列,尤其是 t2.micro 和 t3.micro。这个系列叫“突发性能实例”,它的 CPU 基线的设计思路是“允许你短时间跑满 CPU,但如果长时间满负荷运行,会消耗积分(CPU Credits)”。积分用完后,CPU 会被限制在基准性能附近,适合学习、博客、小型应用这类负载不高的场景。t3.micro 是 t2.micro 的升级版,CPU 性能更好、网络更强,价格还差不多,所以能选 t3 就不选 t2。
2.2 免费套餐到底免什么
AWS 对新账号有一个 12 个月的免费套餐,EC2 部分是指每月 750 小时的 t2.micro 或 t3.micro(不同区域可选类型可能不同)。新手最容易误解的一点就是“我免费套餐里有 t2.micro,所以我随便启动一个 8 核 32G 的实例也是免费”——不是的,免费只针对指定实例类型。你要是启动了一个 m5.large,哪怕是第一天注册的新账号,也是按正常价格按秒计费的。
另外“750 小时/月”的意思是你只要同时开着超过一台免费实例,超过的部分就会收费。上个月我自己就是开了 2 台 t3.micro 做测试,结果跑了一周才发现账单上有几美元的扣费,金额虽然不大,但这种意外的收费体验会吓退很多新手。学习阶段就老老实实开一台,用完及时停止或终止,这才是免费的玩法。
3. 密钥对、网络和安全组:新手最容易翻车的三道坎
启动实例的最后阶段会让你配置密钥对、网络和安全组。很多教程把这一部分浓缩成“按默认就好”,但真相是,这一块恰恰是新手翻车最多的地方——因为到了手才发现连不上实例,99% 都出在这三道坎上。
3.1 密钥对:你唯一的 SSH 密码
在 AWS Linux 类实例上,默认是不允许密码登录的,只能通过密钥对验证。创建密钥对的时候,选择 RSA 类型,然后系统会下载一个 .pem 文件给你。这个文件是你登录实例的唯一凭证,一定要放到安全的地方保存好——我通常会放到 ~/.ssh/ 目录下,并且把文件权限改成 400(仅当前用户可读),因为 OpenSSH 客户端检测到权限过宽会直接拒绝使用这个密钥文件并报错。
有几个非常经典的报错,我几乎每周都能在技术群里看到:
Permission denied (publickey):大概率是密钥文件选择错了,或者用户不是ec2-user/ubuntu。Unprotected private key file:是因为.pem文件权限太大了,执行chmod 400 你的密钥.pem即可解决。Connection timed out:通常是安全组没放行 SSH 端口,或者网络 ACL 拒绝,往下看。
3.2 安全组:云服务器的“虚拟防火墙”
安全组相当于实例前面的防火墙规则,默认只放行 SSH(22 端口)入站流量,所以你在浏览器里 HTTP 访问 IP 是打不开的,必须先通过安全组放行 80 或 443 端口。很多新手在这里犯的错是把来源(Source)设置成 0.0.0.0/0——这意味着任何公网 IP 都可以访问你的 22 端口,你的服务器将会长时间被全球各种扫描工具盯上,日志里全是爆破尝试。虽然 Linux 密钥登录相对安全,但总是被人扫描总归不是好事。
我的建议是,初学阶段如果只有你自己的 IP 在访问服务器,来源里可以填 我的IP(控制台有一个快捷按钮自动获取你当前的公网 IP)。如果实在不方便填,就把来源限制在一个较小的 IP 段内,比如 123.45.67.0/24。另外至少要开放这几个端口:
- 22(SSH 远程连接)
- 80(HTTP,如果打算跑 Web 服务)
- 443(HTTPS,如果需要上证书)
安全组修改后会立即生效,不需要重启实例,这一点非常好用。如果你改了规则之后发现还是连不上,可以试试在安全组里加一条“所有 ICMP”,然后用 ping 命令去测网络通不通——如果通了说明防火墙规则没问题,问题大概率出在 SSH 服务本身。
3.3 公网 IP 与自动分配 IP 的关系
启动实例时,有一个名叫“自动分配公网 IP”的选项,默认是勾选的。很多人不理解为什么有时候实例明明开着却没有公网 IP。这是因为如果你没有单独设置“自动分配公网 IP”,只有在你启动实例的时候网络接口才可能获取到一个临时公网 IP。这个 IP 在你停止再启动实例时会变化——一旦你停止实例并再次启动,AWS 会收回旧的公网 IP,重新分配一个新的。
如果你需要一个不会变的固定 IP,用“弹性 IP”(Elastic IP)服务即可,把弹性 IP 关联到实例上,实例的公网出口就是固定 IP。要注意的是,弹性 IP 只要不关联到运行中的实例,就会按小时收取少量闲置费用,所以用完记得释放,别让它白白扣钱。
4. 存储配置:容量大小、磁盘类型和“删除保护”的真相
EC2 的存储用的是 EBS(Elastic Block Store),相当于给实例挂了一块云硬盘。新手配置存储时只需要回答三个问题:容量多大、用哪种类型、是否随实例删除。
容量建议直接从 20GB 起步。原因很实在:AWS 免费套餐里包含 30GB 的 EBS 存储,20GB 完全在免费额度里;而默认的 8GB 对于安装了开发环境、Docker、编译缓存之后,很快就会见底,到时候扩容虽然也能操作,但比一开始设大要麻烦得多。
磁盘类型建议选 gp3(通用型 SSD 三代)。这是目前性价比最高的默认选择,基础性能就有 3000 IOPS 和 125 MB/s 吞吐量,而且 gp3 支持单独调整 IOPS(最高可到 16000)而无需更换磁盘类型。相比之下,上一代 gp2 在磁盘容量越大时 IOPS 才越高,上限又受限,对于新手不推荐。
删除行为需要看清楚:根卷(实例启动时默认挂载的那个卷)默认勾选“随实例删除”,而如果你额外添加了一个数据盘,默认是“不随实例删除”。这意味着当你终止实例时,根卷会被销毁,里面的数据会一起没了,而额外的数据盘会保留下来,继续产生存储费用。很多事故就是这么来的:误删了实例才发现里面有重要的数据库文件。如果希望数据持久化,要么定期备份到 S3,要么把重要数据都放在额外数据盘上。
存储这块还有一个小知识点是“加密”。EBS 加密功能可以给卷中的数据做静态加密,AWS 默认提供主密钥,不额外收费。新手的印象里加密是高级功能,实际上只是勾选框的事,建议启动时直接勾选,对性能的影响小到可以忽略。如果等以后数据量大了再迁移到加密卷,反而会麻烦得多。
5. 启动实例并完成连接:从网页控制台到 SSH 终端的最后一公里
配置完前面的步骤后,点“启动实例”,AWS 会在几十秒内完成创建,并在实例状态里显示“正在运行”。很多人走到这一步觉得大功告成了,其实真正的门槛才刚刚开始——怎么连上这台云端服务器操作它。
5.1 SSH 连接的标准姿势
拿我用的 macOS / Linux 终端来说,连接命令如下:
bash复制chmod 400 ~/.ssh/my-key.pem
ssh -i ~/.ssh/my-key.pem ec2-user@<你的实例公网IP>
不同 AMI 的默认用户名不一样,这是新手很容易忽略的细节:
- Amazon Linux:
ec2-user - Ubuntu:
ubuntu - Debian:
admin - CentOS:
centos
如果你用的是 Windows,最省事的方式是使用 Windows Terminal 或 PowerShell 里自带的 OpenSSH 客户端,命令和上面一样;也可以使用 PuTTY,但需要把 .pem 转换为 .ppk 格式(用 PuTTYgen 工具操作),步骤略繁琐。我的看法是,新装了 Windows 11 的机器直接用自带 SSH 命令就行,少安装一个软件就少一个出错的环节。
5.2 用户数据脚本:让第一次启动就自动装好环境
如果你不想每次创建实例后都手动敲一堆 apt update、apt install nginx 之类的命令,AWS 有一个叫“用户数据(User Data)”的功能可以在实例首次启动时执行你写入的脚本。在启动实例的配置页里,有一个“高级详情”折叠菜单,里面会有“用户数据”文本框,直接把初始化脚本填进去就行。
以 Ubuntu 为例,一段最简单的初始化脚本长这样:
bash复制#!/bin/bash
apt update -y
apt install -y nginx git
systemctl enable nginx
systemctl start nginx
这段脚本在实例首次启动时执行一次,会帮你装好 Nginx 和 Git,并让 Nginx 开机自启。你启动完实例,等两三分钟,直接访问公网 IP 就能看到 Nginx 默认欢迎页。用户数据脚本排错有些技巧:脚本执行日志一般写在 /var/log/cloud-init-output.log,如果脚本没生效,先去这个日志里看报错内容,多半能定位是命令写错还是网络没通。
5.3 连不上实例时的排查顺序
这部分我打算像流水账一样列出我的排查顺序,因为新手最容易在这里东试一下西试一下,浪费大量时间:
- 看实例状态是不是
running,如果状态异常就先从实例本身看起。 - 在安全组里确认入站规则是否允许
22 端口从你当前的 IP 访问。 - 用
ping测一下 IP 是否可达,理解 VPC 网络是否通。 - 确认登录用户名和镜像匹配,Ubuntu 镜像不能拿
ec2-user登录。 - 确认密钥文件权限不是过宽。
- 检查实例是否绑定了正确的密钥对——这一步没法在启动后改,如果真选错了,只能用现有密钥对登录后重置 authorized_keys,或用 EC2 的“获取系统日志”截图排错。
警告:千万不要为了图方便去改 sshd_config 开启密码登录。每次这么做,等于把服务器大门上的锁换成了门帘。学习阶段确实会为“被锁在外面”而烦,但养成用密钥的好习惯,以后管理批量服务器时才不会吃大亏。
6. 实例起来了,账单和安全才是真正的大考
实例成功连上、Nginx 跑起来之后,新手容易陷入兴奋期,放着不管到处看还有人能访问,过几天一看账单直接傻眼。在我看来,一台 EC2 实例从“不花钱”到“开始烧钱”往往就是两三个不显眼的配置决定的。所以最后这部分,我想重点讲大家都要学会的成本与安全运营习惯。
6.1 停止、终止、休眠和弹性 IP 都是不同的概念
- 停止实例:实例关机,计算费用停止,但 EBS 卷仍保留,存储费用照收。
- 终止实例:实例被删除,默认根卷被销毁,无法恢复。
- 休眠实例:状态保存到磁盘,类似电脑的休眠,但并非所有实例类型都支持,新手阶段不建议依赖它。
- 弹性 IP:如果是“未关联”的状态,按小时计费;关联到实例后免费(但停止实例后,该 EIP 仍计入闲置费,部分情况下会收费)。
每次停止实例前,自己心里过一遍:我是不是临时不跑这个服务?如果是,停止没问题;如果这个服务器已经完成使命,请直接终止,不要留在那里当“僵尸机”占着 EBS 费用。
6.2 用 Budget 功能提前拦住“天价账单”
AWS 账单有个特点:按量计费看得见摸得着,但因为没有“余额不足停机”这个概念,一旦产生费用就真的是欠费了。我建议在注册完账号的第一时间就创建一个预算(Budget):
- 打开 AWS Cost Management 的 Budgets 页面。
- 创建预算,类型选“成本预算”。
- 预算金额设为 5 美元(或你预期的月消费额)。
- 设置阈值提醒,比如实际花费达到 80% 时发邮件通知。
- 添加一个“无限制的预算”,防止意外免费额度用完后立刻产生较大扣费。
别低估这一步的价值,对新手来说成本感知远比优化参数重要。知道“现在花了多少”会让你在看 AWS 文档时心里有底气,而不会因为账单焦虑而畏手畏脚。
6.3 基础的安全生产习惯
实例连上后的“第一天”,我建议你顺手做这几件小事:
- 修改主机名:
sudo hostnamectl set-hostname web-server-01,这样以后在终端里看提示符就知道自己连的是哪台机器,不至于同时管理多台时弄混。 - 定期更新系统补丁:Ubuntu 执行
sudo apt update && sudo apt upgrade -y,Amazon Linux 执行sudo yum update -y。 - 如果你只是学习测试,尽量少用
sudo的宽泛命令,某些网上复制下来的脚本会直接关闭防火墙或修改全局权限,别盲目执行。 - 开启 SSH 只使用密钥登录,已经说过了,再强调一次:不要因为防火墙设置不方便就开后门。
7. 小结与一些我的体会
我想补充几个我对整个 EC2 入门这件事的个人体会。
一个是“跟着文档走,别自由发挥”。AWS 的官方文档虽然读起来比较枯燥,但对于“为什么这个配置会影响连接”“哪个服务在什么条件下收费”这类问题,官方文档给的信息是最准确的。很多第三方教程只是把官方文档简化了,简化过程中丢失了重要的例外情况和限制,容易误导人。新手遇到问题,第一反应应该是搜 AWS 官方文档或官方论坛,而不是只看别人的二手经验。
另一个体会是“测试环境千万不要裸奔”。一台裸的 EC2 实例,如果安全组全放开,公网上各种扫描脚本大概会在几小时到几天内找上门。我说的不是我吓唬人,这是真实情况。所以哪怕只是一台临时测试机,安全组、密钥、防火墙这些基础防护也值得好好配一次。配错一次的成本,一定比配好的时间成本高得多。
最后一个建议是,学会用“终止实例”而不是“停止实例”来收拾测试环境。很多人因为担心删除后找不到原来的配置,就把一堆不再用的实例停在那边,每个月白白交存储费。这就像租房到期了,东西全部搬走才是真正的结束,而不是把房子空着继续交租。AWS 里,配置是可以写成启动模板(Launch Template)保存下来的,下次要再启动一台一模一样的实例,直接从模板一键创建就行,完全没必要让旧实例一直开着。
希望这一篇从账号到连接、从存储到成本的 6 步入门指南,能帮你顺利踩完 EC2 新手期最坑的几个坑。我踩过的这些坑你都绕过去了,后面的路会顺畅很多。如果你在操作中遇到某个步骤连不上、某个配置报错,顺着前面章节的顺序排查一遍,大概率能找到原因。
