第 5 课:创建 ECS 与安全组
第三阶段 · 阿里云 ECS 与宝塔面板 · 面向 macOS 和 Windows 的 Docker 初学者
本课完成标准
你能够:
- 在阿里云控制台找到 ECS 的公网 IP;
- 解释公网 IP、内网 IP 和安全组;
- 规划 SSH、宝塔、HTTP、HTTPS、FastAPI、MySQL 端口;
- 从 macOS Terminal 或 Windows PowerShell 通过 SSH 登录 ECS。
1. 先建立一张地图
ECS 可以理解为云上的一台 Linux 电脑:
你的电脑(macOS / Windows)
│ SSH
▼
阿里云 ECS(Linux 服务器)
公网 IP 让互联网找到它;安全组像云端防火墙,决定哪些端口允许进入。后续 Docker、宝塔、FastAPI 和 Nginx 都安装在这台 ECS 上。
**本课先不安装 Docker。**先把服务器和网络入口弄清楚,下一课再安装宝塔面板。
2. 创建 ECS 时记录什么?
在阿里云控制台选择 ECS,创建 Linux 实例。控制台界面会随产品版本调整,但请记录:
| 信息 | 白话含义 | 后续用途 |
|---|---|---|
| 地域和可用区 | 服务器所在的数据中心 | 选择离用户较近、并与其他资源相同的地域 |
| 公网 IPv4 | 互联网访问服务器的地址 | SSH 登录、域名解析 |
| 内网 IP | 阿里云内部网络地址 | 连接同地域的内部资源 |
| 系统 | 服务器使用的 Linux 发行版 | 后续命令要与系统兼容 |
| 登录方式 | 密码或 SSH 密钥 | 管理员登录服务器 |
| 安全组 ID | 一组防火墙规则的编号 | 修改端口和排查连接问题 |
初学者可选择常见的 64 位 Linux 镜像,并使用阿里云文档支持的版本。不要把 ECS 登录密码、私钥或公网 IP 提交到 GitHub。
3. 安全组到底是什么?
安全组控制“进入 ECS 的网络请求”。它不是 Linux 内部的用户密码,也不是 Docker 网络。规则通常按“协议 + 端口 + 来源地址”匹配。
| 端口 | 用途 | 本课程的建议 |
|---|---|---|
| 22/TCP | SSH 远程管理 | 只允许你的当前公网 IP |
| 宝塔面板端口 | 面板管理 | 只允许你的当前公网 IP;安装后按面板提示设置 |
| 80/TCP | HTTP 网站 | 允许公网访问 |
| 443/TCP | HTTPS 网站 | 允许公网访问 |
| 8000/TCP | FastAPI 直连端口 | 不开放公网,由 Nginx 内部转发 |
| 3306/TCP | MySQL | 不开放公网,应用通过服务器内部网络连接 |
重要:“为了方便先开放所有端口”会把服务器暴露给扫描和攻击。只开放当前任务需要的端口;测试结束后删除临时规则。
参考:阿里云 ECS 安全组官方文档。
4. SSH 登录前的准备
macOS Terminal 和 Windows PowerShell 通常都自带 OpenSSH:
ssh root@你的ECS公网IP
把“你的ECS公网IP”替换为真实 IP,不要输入中文引号。
如果使用密钥文件:
ssh -i /密钥文件路径 root@你的ECS公网IP
首次连接会提示服务器指纹。确认这是你刚创建的 ECS 后,再输入 yes。密码登录时,终端输入密码不会显示星号,这是正常现象。
5. 登录后做三项确认
cat /etc/os-release
whoami
hostname
你应该确认:
- 系统版本与创建 ECS 时选择的一致;
- whoami 显示当前登录用户;
- 主机名确实是这台 ECS,而不是本机终端。
还可以查看公网出口地址:
curl -4 ifconfig.me
这个地址可能与本地电脑的公网 IP 不同。配置 SSH 安全组时,来源应填写你当前电脑上网使用的公网 IP,而不是 127.0.0.1。
6. 连接失败时按证据排查
| 现象 | 优先检查 | 常见原因 |
|---|---|---|
| Connection timed out | 安全组 22/TCP、公网 IP | 端口未开放,或 IP 写错 |
| Connection refused | 服务器 SSH 服务 | 端口可达,但服务未监听或端口不是 22 |
| Permission denied | 用户名、密码、密钥权限 | 登录用户错误或密钥不匹配 |
| REMOTE HOST IDENTIFICATION HAS CHANGED | 确认 IP 是否对应新 ECS | 本地保存了旧服务器指纹;不要盲目忽略警告 |
不要只说“连不上”。请记录:操作系统、完整 SSH 命令(隐藏密码)、错误输出、ECS 公网 IP 是否确认、22 端口规则截图或文字。
7. 安全组通关练习
在控制台检查入方向规则:
[ ] 22/TCP:来源是自己的公网 IP
[ ] 80/TCP:按需允许公网
[ ] 443/TCP:按需允许公网
[ ] 8000/TCP:没有 0.0.0.0/0
[ ] 3306/TCP:没有 0.0.0.0/0
[ ] 宝塔端口:未开放给所有公网地址
如果尚未安装宝塔,暂时不需要添加面板端口。下一课会在安装后说明如何按面板提示开放对应端口。
8. 一分钟自测
问题 1:为什么生产环境不直接开放 8000?
- A. 让 Nginx 统一处理公网请求,FastAPI 只在内部监听
- B. 因为 Docker 不支持 8000
- C. 因为 SSH 只能使用 8000
问题 2:SSH 安全组的来源地址最合理的设置是什么?
- A. 自己当前的公网 IP
- B. 0.0.0.0/0 永久开放
- C. 127.0.0.1
答案:1A,2A。
本课通关证据
ssh root@你的ECS公网IP
cat /etc/os-release
whoami
hostname
完成标准:你能登录 ECS,能说出公网 IP 和内网 IP 的区别,并确认安全组没有公网 8000 和 3306。
如果遇到错误,请贴操作系统、完整命令和完整错误输出(隐藏密码和私钥)。下一课开始使用宝塔面板。
参考:阿里云 ECS 安全组官方文档。
想系统学习这门课程?
你已阅读完本文。需要更完整的知识体系,可以继续了解「Vibe Coding 实战课程」。
查看课程详情