---
url: /courses/cloud-platform-build-management/01-cloud-and-environment/index.md
---
# 第一次课：从自己的电脑走进云服务器

## 进入本课环境

* `[Windows PowerShell] wsl ~`：打开电脑里已经安装的 WSL2 Ubuntu；如果尚未安装，先阅读本课 1.4 节，不要重复安装或注销已有发行版。
* `[WSL] ssh root@你的ECS公网IP`：从 WSL 连接自己的 ECS；如果登录用户不是 `root`，请换成控制台显示的实际用户，看到远端提示符后再执行标为 `[ECS]` 的命令。

本课的起点是一条 SSH 连接：你坐在 Windows 电脑前，通过 WSL2 进入一台远程云服务器。

一次连接，穿过三个环境。Windows 是桌面操作入口，WSL2 发起 Linux 命令，ECS 运行远程服务。连接成功后，还需要用实际输出来证明自己进入了哪台机器、它当前的基本状态怎样。

学完本课，做到五件事：

* 分清云服务模型，不把“用了浏览器”误认为“用了云”。
* 分清 Windows、WSL2 和 ECS 各自的位置和职责。
* 判断电脑里是否已有 WSL2 Ubuntu；没有时完成安装和首次初始化。
* 用 SSH 安全进入 ECS。
* 用几条只读命令证明“我连到了哪台机器，它现在是什么状态”。

如果云服务器暂未开通，可以先完成环境识读、连接链路和故障判断，等服务器可用后再补充登录证据。

::: tip 课程准备
[还没有 ECS？按攻略领取学生权益并购买服务器](./01a-ecs-student-access.md)

从 300 元抵扣金领取入口开始，逐项完成 2 核 2 GiB ECS 配置、核价与开通检查。
:::

## 1.1 先检查运行环境

用 1 分钟确认自己的环境状态：ECS 是否开通、WSL 是否可用、是否使用过 SSH。

请按真实情况选择。不要填写公网 IP、账号、密码、订单号或任何密钥。

{{intake-survey:lesson-01-readiness}}

## 1.2 云计算与服务模型

云计算的核心是按需使用计算、存储、网络和软件服务，不必提前采购全套服务器和网络设备。

“云”不是某个具体产品。判断一项云服务，抓住两个问题：

1. 服务商替我管理到了哪一层？
2. 剩下哪些事情仍然由我负责？

### IaaS：给你基础设施，系统和应用由你管理

阿里云 **ECS**（Elastic Compute Service，云服务器实例） 是典型的 **IaaS**（Infrastructure as a Service，基础设施即服务）。云服务商负责机房、物理服务器、虚拟化和基础网络，交到你手里的是一台可以远程管理的虚拟服务器。

但你仍然要负责：

* 操作系统账号和补丁；
* 软件安装和配置；
* 服务是否启动；
* 端口是否合理；
* 数据备份；
* 应用故障和大部分安全配置。

这门课的大部分动手任务都在这一层完成。

### PaaS（平台即服务）：给你运行平台，少管一些底层细节

托管数据库、函数计算和应用运行平台都属于这一类。使用这些服务时，你可以把精力放在数据、代码和配置上，不必亲自维护每一项操作系统服务。

底层工作少了，不等于可以完全放手。账号归谁、权限怎么分、数据是否安全、费用有没有超出预算，这些事仍然要有人管。

### SaaS（软件即服务）：直接使用软件

日常使用的在线文档、云邮箱和在线会议就是常见例子。用户通常不需要知道后台服务器怎样运行，打开软件、使用功能即可。

三种服务模型的责任边界如下：

**IaaS**

* 你得到：虚拟服务器、网络和磁盘。
* 你负责：操作系统、软件、服务和数据。
* 本课例子：ECS。

**PaaS**

* 你得到：可直接使用的运行平台。
* 你负责：应用、数据和平台配置。
* 常见例子：托管数据库、函数计算。

**SaaS**

* 你得到：完整软件功能。
* 你负责：账号、内容和使用方式。
* 常见例子：在线文档、云邮箱。

> 判断 IaaS、PaaS、SaaS，不是看产品名字，而是看责任边界。

## 1.3 云的部署方式

IaaS、PaaS、SaaS 回答的是“服务商帮你管到哪一层”；公有云、私有云、混合云回答的则是“资源由谁拥有、为谁服务、怎么连起来”。

* 公有云：由云服务商建设和运营，多个客户按隔离规则使用。我们使用的学生 ECS 属于公有云资源。
* 私有云：为一个组织独立建设和管理，常用于对控制、合规或内部系统有特殊要求的场景。
* 混合云：把公有云和本地机房或私有云连接起来，按业务需要分配资源。

服务模型与部署模式是两个不同的分类维度。公有云中同样可以提供 IaaS、PaaS 和 SaaS。

## 1.4 Windows、WSL2 和 ECS 如何配合

本课程使用三个相互配合的环境。它们可能出现在同一个屏幕里，实际位置和职责并不相同。

**Windows 11：桌面入口**

* 运行浏览器、编辑器、阿里云控制台和 Windows Terminal。
* 使用 PowerShell 管理 WSL 的安装、发行版和运行状态。

****WSL** WSL2 Ubuntu：Linux 控制端**

* 运行 SSH、Git、Shell，以及后面要用的 Ansible。
* 它在自己的 Windows 电脑里，不是公网云服务器。

WSL 是“适用于 Linux 的 Windows 子系统”。WSL2 底层会使用虚拟化技术运行 Linux 内核，但平时不需要打开传统虚拟机软件，也不用寻找一台名为“WSL”的虚拟机。学生真正要辨认和进入的是 Ubuntu 这样的 Linux 发行版。

****ECS** 阿里云 ECS：远程被管理服务器**

* 运行 Linux 服务、网站、容器和 K3s。

### 先判断电脑里有没有现成的 WSL

打开“开始”菜单，搜索并运行 **Windows Terminal** 或 **PowerShell**。这里还是 Windows，不要急着输入 Linux 命令。

在 PowerShell 中运行：

```powershell
[Windows PowerShell] wsl --status
```

这条命令查看 WSL 的默认发行版、默认版本和内核等总体状态。部分较旧的 WSL 版本显示的字段会少一些，因此还要继续查看已经安装的发行版：

```powershell
[Windows PowerShell] wsl --list --verbose
```

它也可以简写为 `wsl -l -v`。输出重点看三列：

| 字段 | 怎样读 |
|---|---|
| `NAME` | 已安装的 Linux 发行版名称，例如 `Ubuntu` 或 `Ubuntu-24.04` |
| `STATE` | `Running` 表示正在运行，`Stopped` 只表示当前已停止 |
| `VERSION` | `2` 表示这个发行版使用 WSL2 |

名称前的 `*` 表示默认发行版。看到 Ubuntu、`Stopped` 和 `VERSION 2` 时，环境已经存在，只是没有启动，不需要重装。

### 已有 Ubuntu：直接进入现有发行版

已有 Ubuntu 时，优先使用 `wsl -l -v` 中显示的准确名称：

```powershell
[Windows PowerShell] wsl --distribution Ubuntu
```

如果显示的是 `Ubuntu-24.04`，就把命令末尾改为 `Ubuntu-24.04`。也可以从“开始”菜单搜索 Ubuntu，或者从 Windows Terminal 的下拉菜单进入。

只有一个默认发行版时，还可以从 PowerShell 直接进入它的 Linux 家目录：

```powershell
[Windows PowerShell] wsl ~
```

提示符变成类似 `student@DESKTOP:~$` 后，后面的命令已经进入 **WSL**。`Stopped` 的发行版会在进入时自动启动，不需要先点“开机”。

::: warning 安全边界
已有 Ubuntu 时不要再次安装，也不要执行 `wsl --unregister`。`--unregister` 会注销发行版，并永久删除其中的文件、软件和设置。
:::

### 没有 Ubuntu：安装 WSL2 和课程发行版

如果 PowerShell 提示没有已安装的发行版，右键 PowerShell，选择“以管理员身份运行”，再执行：

```powershell
[Windows PowerShell（管理员）] wsl --install -d Ubuntu
```

这条命令会启用 WSL 和“虚拟机平台”组件，安装 WSL2 所需内核，并安装 Ubuntu。命令完成后按提示重启 Windows。

如果命令只显示帮助信息，说明 WSL 本体可能已经存在，但还没有安装发行版。先查看在线列表：

```powershell
[Windows PowerShell] wsl --list --online
```

确认列表中有 `Ubuntu` 后，再执行 `wsl --install -d Ubuntu`。

下载一直停在 `0.0%` 时，可以改用微软提供的网络下载路径：

```powershell
[Windows PowerShell（管理员）] wsl --install --web-download -d Ubuntu
```

不要同时反复打开多个安装窗口。下载受校园网络影响时，保留报错和进度，由教师统一判断是继续等待、换网络还是使用学校准备的安装包。

### 第一次打开 Ubuntu：建立 Linux 账号

重启后，从“开始”菜单打开 Ubuntu。第一次启动会解压文件，随后要求创建 Linux 用户名和密码。

* Linux 用户名可以与 Windows 用户名不同，建议使用简短的英文小写名称。
* 输入密码时屏幕不会出现星号或圆点，这是 Linux 终端的正常行为。
* 这个密码用于在 WSL 中执行 `sudo`，不是 Windows 密码，也不是 ECS 密码。
* 不要把密码写进报告、截图或聊天记录。

初始化完成后回到 PowerShell，再次运行 `wsl -l -v`。课程使用的 Ubuntu 应显示 `VERSION 2`。若显示 `VERSION 1`，先保存现有项目，再由教师指导转换；已有大量文件时不要在课堂上盲目切换版本。

### 进入 WSL 后确认它真的可用

下面五条命令分别确认账号、目录、发行版、内核和 SSH 客户端：

| 命令 | 用途 |
|---|---|
| `whoami` | 查看当前 Linux 用户 |
| `pwd` | 确认当前目录，刚进入时应位于自己的 Linux 家目录附近 |
| `cat /etc/os-release` | 查看 Ubuntu 发行版信息 |
| `uname -r` | 查看当前 Linux 内核 |
| `ssh -V` | 确认 SSH 客户端已经可用 |

在 Ubuntu 终端中执行：

```bash
[WSL] whoami
[WSL] pwd
[WSL] cat /etc/os-release
[WSL] uname -r
[WSL] ssh -V
```

`/etc/os-release` 中应能看到 Ubuntu 信息，`ssh -V` 应显示 OpenSSH 版本。它们能证明本地 Linux 控制端基本可用，但还没有证明 ECS 可以连接。

课程文件建议放在 WSL 的 Linux 家目录，例如：

```bash
[WSL] mkdir -p ~/cloud-course
[WSL] cd ~/cloud-course
[WSL] pwd
```

离开 Ubuntu 时运行：

```bash
[WSL] exit
```

`exit` 只是退出当前终端。排查 WSL 状态或需要停止所有发行版时，才在 PowerShell 使用 `wsl --shutdown`；日常结束一个终端不必每次关停整个 WSL。

### 常见安装现象怎样处理

| 现象 | 先检查什么 | 不要急着做什么 |
|---|---|---|
| `wsl` 不是可识别的命令 | Windows 更新、WSL 可选组件是否启用 | 不要下载来历不明的安装器 |
| `0x80370102` | 任务管理器“性能—CPU”中的虚拟化状态、虚拟机平台组件 | 不要在不清楚选项时随意修改 BIOS |
| 没有已安装的发行版 | `wsl --list --online`，再安装 Ubuntu | 不要把“没有发行版”误判成电脑不能运行 WSL |
| Ubuntu 能打开但 `ssh` 不可用 | `ssh -V` 的原始输出、系统是否为 Ubuntu | 不要直接重置或注销发行版 |

学校机房中没有 BIOS 或 Windows 功能管理权限时，记录错误代码、Windows 版本和虚拟化状态，交给教师或机房管理员处理。

::: tip 关键提醒
先在 PowerShell 用 `wsl -l -v` 确认发行版，再进入 Ubuntu 执行 Linux 命令。PowerShell 管 WSL，WSL 用来管理 ECS，这三个位置不能混在一起。
:::

连接链路如下：

```txt
Windows 11
  └─ WSL2 Ubuntu
       └─ SSH 客户端
            └─ 互联网
                 └─ ECS 安全组
                      └─ ECS 的 SSH 服务
                           └─ Linux 账号与凭据
```

::: tip 关键提醒
以后遇到“连接不上”，不要只用一句“网络坏了”带过。沿着连接链路逐层寻找证据，才能知道问题究竟停在哪一道门。
:::

{{guided-demo:lesson-01-connection-path}}

## 1.5 辨认命令的执行位置

远程运维最容易出的错，不是命令拼写，而是把命令敲在了错误的机器上。

正文统一使用两个位置标记：

```txt
[WSL]  表示命令在本地 WSL2 Ubuntu 中执行
[ECS]  表示已经通过 SSH 登录，命令在远程云服务器执行
```

在 WSL 中查看本机身份：

```bash
[WSL] whoami
[WSL] hostname
[WSL] uname -a
```

登录 ECS 后执行同样的命令：

```bash
[ECS] whoami
[ECS] hostname
[ECS] uname -a
```

若两端的 `hostname` 相同，需要继续核对连接状态：可能尚未进入远端，也可能两台机器使用了相同主机名，不能只凭一项输出下结论。

{{reflection-checkpoint:lesson-01-environment-roles}}

## 1.6 SSH 登录条件

**SSH**（Secure Shell，用于加密远程登录） 是一种安全的远程登录协议。它让 WSL 中的 SSH 客户端和 ECS 上的 SSH 服务建立加密连接。

一条典型命令长这样：

```bash
[WSL] ssh 用户名@服务器地址
```

这里没有“万能用户名”。不同镜像的默认账号可能不同，以实例镜像说明和控制台信息为准。

要成功登录，至少要满足这些条件：

1. ECS 处于运行状态。
2. 你使用的是正确的公网访问地址。
3. 安全组允许你的来源访问 SSH 端口。
4. ECS 上的 SSH 服务正在监听。
5. 用户名正确。
6. 密钥或密码与账号匹配。

::: warning 安全边界
密码、私钥和验证码不是“登录证据”，而是敏感凭据。不能把它们放进作业、截图、Git 仓库或 AI 对话。
:::

## 1.7 配置安全组

**安全组**（云侧虚拟防火墙，按协议、端口和来源控制访问） 像云服务器外面的一道网络门禁。它决定哪些来源可以访问哪些端口。

安全组规则包含三个核心要素：

* 协议：例如 TCP。
* 端口：SSH 常见为 22，但实际以服务器配置为准。
* 来源：允许谁访问。

::: warning 安全边界
不要为了“先连上再说”而放开所有端口和来源。这样看似省事，实际会把云服务器暴露在不必要的风险里。
:::

最低安全要求：

* 只开放当前实验需要的端口。
* 来源范围能收窄时就收窄。
* 不把 3306、6379、NFS、Samba 或 Docker API 暴露到公网。
* 实验结束后复查安全组。

## 1.8 第一次 SSH 登录与系统基线

首次连接服务器时，SSH 可能要求确认主机指纹。先核对服务器地址是不是自己的控制台或课程提供的信息，确认目标无误后再输入 `yes`。

登录成功后，使用只读命令建立系统基线。每条命令回答一个具体问题：

* `whoami`：确认当前登录账号；刚进入服务器或切换账号后使用。
* `hostname`：确认当前主机；同时开着多个终端时尤其重要。
* `uname -a`：查看内核与系统架构；判断内核环境或排查兼容问题时使用。
* `cat /etc/os-release`：查看 Linux 发行版和版本；安装软件前先确认系统类型。
* `free -h`：查看内存整体状态；重点关注 `available`，不要只看 `free`。
* `df -h`：查看各文件系统的空间占用；安装软件或写入大量数据前使用。
* `ip -brief address`：查看网络接口、状态和地址；确认服务器网络位置时使用。

执行以下命令获取基线数据：

```bash
[ECS] whoami
[ECS] hostname
[ECS] uname -a
[ECS] cat /etc/os-release
[ECS] free -h
[ECS] df -h
[ECS] ip -brief address
```

### 真实运行案例：从 WSL 进入云主机后先看基线

下面这组真实记录来自演示控制端和云主机 B。卡片一次突出一条命令，命令下面就是它的直接输出；点击步骤名称可以切换检查项，也可以选择“显示全部”进行对照。登录用户和主机名已获授权保留，公网地址、MAC 与凭据不进入课程包。

查看每一步时，先读命令和原始输出，再看卡片下方的“能够证明”和“还不能证明”。原始整页截图保留在卡片末尾，用于核对这组分步数据是否来自同一次记录。

::: tip 关键提醒
真实的运维工作不只看“命令有没有敲过”，更看你能否解释输出，以及这些输出能证明什么。
:::

## 1.9 SSH 常见错误与排查

常见报错及排查方向：

**`Connection timed out`（连接超时）**

* 优先检查：地址、实例状态、安全组和网络路径。
* 暂时不要：反复改密码。

**`Connection refused`（连接被拒绝）**

* 优先检查：SSH 服务是否监听、端口是否正确。
* 暂时不要：直接重装系统。

**`Permission denied`（权限被拒绝）**

* 优先检查：用户名、密钥或密码、密钥权限。
* 暂时不要：开放所有端口。

**`No route to host`（无路由到主机）**

* 优先检查：地址、路由和网络连接。
* 暂时不要：随机修改服务器配置。

排障记录统一使用以下格式：

```txt
现象：
第一条证据：
当前假设：
下一步只读检查：
采取的操作：
验证结果：
```

让 AI 协助分析报错时，只给脱敏后的错误信息和必要上下文就好。私钥、密码、完整公网地址和控制台账号一律不要粘贴。

{{chat-lab:lesson-01-ssh-troubleshooting}}

## 1.10 实训：完成第一次云服务器连接

实训要求把连接过程整理成可复核的证据链。

### 第一步：选择完成路径

* **A 路径：ECS 已可用。** 完成 WSL 检查、链路图、控制台核查、SSH 登录、ECS 基线、故障工单和本地验收。
* **B 路径：ECS 暂不可用。** 完成 WSL 检查、链路图、课程提供的合成故障案例和 WSL 本地验收；Word 中保留“ECS 补交”小节，服务器可用后再补充远程证据。

同时记录 WSL 状态：W1 表示已有 WSL2 Ubuntu，W2 表示本次完成安装，W3 表示因权限、虚拟化或安装错误暂不可用。ECS 路径和 WSL 状态要分别填写。

先在 Word 中建立报告，文件名使用：

```txt
班级_学号_姓名_第01次课_云平台环境报告.docx
```

### 第二步：确认 WSL 控制端

先在 PowerShell 运行 `wsl --status` 和 `wsl -l -v`，保留发行版名称、状态和 WSL 版本证据。已有 Ubuntu 时直接进入；没有时按 1.4 节完成安装和初始化。

进入 WSL 后运行 `whoami`、`pwd`、`cat /etc/os-release`、`uname -r` 和 `ssh -V`。把 Windows 中的 WSL 状态和 Ubuntu 基线分成两张截图，并写明：

1. 哪些命令在 `[Windows PowerShell]`，哪些命令在 `[WSL]`；
2. `wsl -l -v` 是否证明 Ubuntu 使用 WSL2；
3. Ubuntu 输出是否说明 Linux 环境和 SSH 客户端可用；
4. 用户名、主机名和 Windows 用户目录是否已经脱敏。

### 第三步：画出管理链路

在 Word 中用形状、SmartArt 或清晰的手绘照片画出：

```txt
Windows 11
  -> WSL2 Ubuntu
  -> SSH 客户端
  -> 互联网
  -> ECS 安全组
  -> ECS SSH 服务
  -> Linux 账号
```

每一层至少写一条可以检查的证据，不能只画箭头、不作说明。

### 第四步：核查并登录 ECS

A 路径学生先在控制台确认实例状态、镜像、规格、公网访问方式和安全组，再从 WSL 发起 SSH。不要为了连通而开放所有端口，也不要把完整公网 IP、实例 ID、订单号或账号信息放进截图。

登录成功后运行本课的系统、内存、磁盘和网络检查命令。建议分成两至三张截图，每张截图下面都写清“看到了什么”和“它证明了什么”。只有命令截图、没有解释，不算完整证据。

B 路径学生在这一部分写明“本次暂未获得可用 ECS”，随后使用课程提供的脱敏材料完成连接层级判断，不伪造登录成功截图。

### 第五步：完成故障工单

从 `Connection timed out`、`Connection refused`、`Permission denied` 或 `No route to host` 中选择一种，记录现象、可能层级、第一条证据、下一步只读检查、不应立即执行的操作和判断依据。

### 第六步：运行验收并整理 Word

运行课程实训包中的 `verify.sh`（从智慧职教课程资源区下载 `lab-01-starter.zip` 并解压到 `~/cloud-course/lab-01/starter/`），把验收结果放在报告末尾。随后按任务顺序检查：

* 是否包含 Windows 中的 WSL 状态、Ubuntu 基线、管理链路、ECS 或替代案例、故障工单和验收结果；
* 每张截图是否有编号、标题和结论；
* 是否已经隐藏密码、私钥、验证码、AccessKey、完整公网 IP 和账号信息；
* Word 文件能否重新打开，图片和文字是否清晰。

::: tip 关键提醒
本课最终提交一个 Word 文档，不提交零散截图或 Markdown 模板。完成后上传到智慧职教在线平台“第01次课”对应的作业收集中，并确认平台显示提交成功。
:::

按自己的节奏完成任务：基础还不稳的同学先拿下保底任务；已经熟悉 SSH 的同学继续做挑战任务，不必互相等待。完整操作步骤和截图位置见[实训 01：从 WSL2 安全进入云服务器](./lab-01.md)。

{{reflection-checkpoint:lesson-01-safe-access}}

## 1.11 第一次课小测

小测检查以下三项能力：

* 能不能识别现有 WSL2 Ubuntu，并分清 PowerShell、WSL 和 ECS。
* 能不能沿连接链路判断问题。
* 能不能守住端口和凭据边界。

{{assessment:lesson-01-check}}

## 1.12 小结

这节课真正重要的不是记住一串命令，而是画出第一张云平台运维地图：

* ECS 属于 IaaS，服务商提供基础设施，但操作系统、软件、数据和很多安全责任仍然属于使用者。
* Windows 是桌面入口，WSL 是 Linux 控制端，ECS 是远程被管理服务器。
* `wsl -l -v` 用于辨认已有发行版，`wsl --install -d Ubuntu` 用于首次安装；已有 Ubuntu 不重复安装。
* 进入 WSL 后用账号、目录、发行版、内核和 SSH 版本建立本地控制端基线。
* SSH 登录要经过地址、网络、安全组、服务、账号和凭据多层检查。
* 安全组遵循最小开放，凭据不能进入作业、仓库或 AI 对话。
* 登录后先采集只读证据，再安装、修改或重装。

下一次课还在这台服务器上工作：学习目录、文件、权限、软件包、进程、内存和磁盘检查，再把只读命令串成第一份服务器巡检脚本。

## 1.13 资料来源

以下资料在 2026-07-29 核对：

* [Microsoft Learn：安装 WSL](https://learn.microsoft.com/zh-cn/windows/wsl/install)
* [Microsoft Learn：WSL 的基本命令](https://learn.microsoft.com/zh-cn/windows/wsl/basic-commands)
* [Microsoft Learn：设置 WSL 开发环境](https://learn.microsoft.com/zh-cn/windows/wsl/setup/environment)
* [Microsoft Learn：排查适用于 Linux 的 Windows 子系统问题](https://learn.microsoft.com/zh-cn/windows/wsl/troubleshooting)

{{assistant-invite:lesson-01-finish}}
