跳到主要内容

第 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/TCPSSH 远程管理只允许你的当前公网 IP
宝塔面板端口面板管理只允许你的当前公网 IP;安装后按面板提示设置
80/TCPHTTP 网站允许公网访问
443/TCPHTTPS 网站允许公网访问
8000/TCPFastAPI 直连端口不开放公网,由 Nginx 内部转发
3306/TCPMySQL不开放公网,应用通过服务器内部网络连接

重要:“为了方便先开放所有端口”会把服务器暴露给扫描和攻击。只开放当前任务需要的端口;测试结束后删除临时规则。

参考:阿里云 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 安全组官方文档。


← 第 4 课:Docker Compose · 第 6 课:安装和使用宝塔 →

课程推荐

想系统学习这门课程?

你已阅读完本文。需要更完整的知识体系,可以继续了解「Vibe Coding 实战课程」。

查看课程详情