将 LabEx 连接到你的 Cloudflare 账户

CloudflareBeginner
立即练习

简介

开始本实验或启动 VM 前,请先阅读准备 Cloudflare 学习账号,并在浏览器中完成账号准备。这是必需的前置准备,无需启动 LabEx VM。仅在确认登录邮箱已验证、可以选择自己拥有的专用学习账号、该账号当前使用 Workers Free 计划,并能在同一账号下打开 Workers & Pages 后继续。请记住账号名称;LabEx Learning 是建议的显示名称。如果账号已经准备好,也请先阅读文档并确认这些检查项。

你已经准备好了 Cloudflare 学习账户。现在,使用 Cloudflare 的命令行工具 Wrangler,将 LabEx Linux 环境连接到该账户。浏览器用于确认你的身份,Wrangler 则会在此虚拟机中保存授权信息。仅登录 Dashboard 并不会连接终端。

使用你本人拥有的账户,并确保该账户已验证电子邮件地址且使用 Workers Free 计划,正如 准备 Cloudflare 学习账户 中所做的准备。记住该账户的名称;建议使用 LabEx Learning。本实验会请求读取用户信息和账户信息的权限。它不会部署应用、要求域名或添加付费服务。

实验会自动安装 Node.js 22.22.0 和 Wrangler 4.131.1。你将使用标准的 Wrangler 命令及其项目配置;这些内容也适用于你自己的计算机。你需要亲自授权连接、检查授权结果,并在最后退出。每个新建的虚拟机都需要重新授权。

通过浏览器授权 Wrangler

在此步骤中,你将使用自己的 Cloudflare 登录信息,在 LabEx 虚拟机中授权 Wrangler。

开始本实验或启动 VM 前,请先阅读准备 Cloudflare 学习账号,并在浏览器中完成账号准备。这是必需的前置准备,无需启动 LabEx VM。仅在确认登录邮箱已验证、可以选择自己拥有的专用学习账号、该账号当前使用 Workers Free 计划,并能在同一账号下打开 Workers & Pages 后继续。请记住账号名称;LabEx Learning 是建议的显示名称。如果账号已经准备好,也请先阅读文档并确认这些检查项。

打开 LabEx Terminal,然后进入已准备好的项目目录。cd 命令用于切换工作目录;后续命令都会在此目录中运行。

cd /home/labex/project/cloudflare-connect

Wrangler 已作为开发依赖安装在此项目中。npx wrangler 会运行项目中已安装的版本。初始化过程已经安装 Node.js 和项目依赖,因此不需要再次安装。检查版本:

npx wrangler --version

预期版本为 4.131.1。项目的 package.json 固定了这一确切版本,package-lock.json 则记录了解析后的依赖版本。在你自己的计算机上安装 Node.js 后,可以使用 npm install --save-dev --save-exact wrangler@4.131.1 将 Wrangler 添加到项目中。这只是说明,不要在已准备好的实验环境中额外运行该命令。使用提交到项目中的 lockfile 复现已有项目时,请运行 npm ci

在项目本地安装工具,可以让每个项目独立使用自己的工具版本。请参阅 Cloudflare 的安装指南

现在开始设备授权。--device 会将浏览器中的批准操作连接到这个远程终端,而不使用 localhost 回调。--browser=false 会阻止 Wrangler 尝试在虚拟机中启动浏览器。两个 scope 会为本次连接练习请求账户读取和用户读取权限。Cloudflare 还会包含必需的 Background Access,以便 Wrangler 保持授权状态。本次不会请求 Worker 写入权限。

npx wrangler login --device --browser=false --scopes account:read user:read

Wrangler 会显示验证 URL 和一段简短代码。保持此命令运行,不要关闭。使用你自己的浏览器打开显示的 Cloudflare URL,输入当前终端中显示的代码,然后继续。如果 URL 已经包含代码,请将它与终端中的代码进行核对。不要使用截图中的代码或其他会话中的代码。

Cloudflare 设备授权表单,代码输入框为空

直接从终端复制代码,避免混淆相似字符。选择 Continue。如果 Cloudflare 无法验证代码,请检查字符是否完全一致,以及当前登录命令是否仍在等待。

如果系统提示,请登录。在授权页面上确认应用是 Wrangler,查看它请求的权限;如果页面提供账户选择,只选择你的学习账户。授权页面会在 Account & Billing 下归类显示 Account Read;展开该组进行检查。User ReadBackground Access 会显示在 Required 下。

显示 User Read、Background Access 和 Account Read 的 Wrangler 授权权限

检查 Edit 旁边显示的账户名称。如果这不是你的学习账户,请选择 Edit,选择目标账户,然后返回授权页面。下面的裁剪截图显示了已选账户和 Authorize 按钮;完整页面会在该区域上方显示你的登录身份。

已选择 LabEx Learning 账户,并显示 Edit 和 Authorize 控件

查看页面显示的隐私信息,确认上述内容后选择 Authorize。返回 Terminal,等待看到 Successfully logged in. 后再继续。浏览器批准授权和终端完成登录是两个独立的检查点。

Cloudflare 确认已向 Wrangler 授予授权

成功页面包含一些通用的开发建议。你不需要安装代理工具,也不需要复制其中建议的提示词。其中通用的部署提示不会增加本实验所请求的读取权限。

代码会在较短时间后过期。如果代码过期或你拒绝了请求,请等待命令结束,或按 Ctrl+C,然后重新运行相同的命令以获取新代码。如果你误启动了普通登录流程并看到无法访问的 localhost 页面,请停止该命令,然后使用上面的设备授权命令。

使用 Wrangler 本身确认已保存的登录状态:

npx wrangler whoami --json

查找 "loggedIn": true"authType": "OAuth Token",以及包含你的学习账户的 accounts 数组。每个账户对象都有 nameid 字段。--json 标志会返回结构化数据,而不是面向人的报告;你不需要理解其他账户设置。仅看到浏览器成功页面并不足以证明虚拟机已收到授权。如果 Wrangler 报告你尚未通过身份验证,请重新执行设备授权。

使用此步骤的验证按钮。LabEx 会独立检查此虚拟机中保存的 OAuth 登录状态是否能够读取可访问的账户。

Wrangler 会将凭据保存在虚拟机的用户配置中。不要打印或复制凭据文件,也不要运行显示令牌的命令。请参阅 官方 Wrangler 登录文档 了解设备授权流程。

选择并验证学习账户

在此步骤中,你将确认学习账户,并将其 ID 保存到 Wrangler 的标准项目配置中。

一次登录可能可以访问多个账户。再次运行相同的身份命令,在 accounts 数组中查看账户名称和 ID:

npx wrangler whoami --json

找到 name 能够标识你的学习账户的对象。如果只显示一个账户,也要检查它的名称。如果显示多个账户,请使用 Dashboard 的账户选择器确认哪个是你的学习账户。不要仅因为某个账户排在第一位就选择它。如果目标账户缺失,请重新进行授权,并在浏览器中选择该账户。

从同一个账户对象中复制 **32 个字符的 id**。账户名称只是显示标签;ID 才能标识实际账户。即使你的登录状态可以访问多个账户,Wrangler 的 account_id 设置也能明确指定项目的目标账户。

创建 wrangler.jsonc。运行下面的代码块前,将 YOUR_ACCOUNT_ID 替换为刚才复制的 ID。保留引号。此处的 here-document 会将 CONFIG 分隔符之间的全部内容写入文件;> 会替换文件原有内容。

cat > wrangler.jsonc <<'CONFIG'
{
  "account_id": "YOUR_ACCOUNT_ID"
}
CONFIG

检查保存的配置:

cat wrangler.jsonc

确认 account_idwhoami --json 中的学习账户对象匹配,并且占位符已经消失。此文件包含的是标识符,不是密码或 OAuth 令牌。不包含注释的 JSON 也是有效的 JSONC;本实验请使用上面显示的格式。后续实验会将 Worker 设置添加到同一个标准配置文件中。请参阅 Wrangler 配置

退出登录前,使用此步骤的验证按钮。后端会读取你的配置,并执行经过身份验证的只读账户请求。它会检查 Cloudflare 是否确认你可以访问该确切账户;仅保存文件并不足以通过验证。如果验证失败,请检查复制的 ID、授权状态和网络连接。你不需要在终端中运行自定义命令。

此步骤验证的是账户读取权限。后续实验会请求部署所需的其他权限。

断开此虚拟机的连接

在此步骤中,你将移除此虚拟机中的 Wrangler 登录状态,并确认它不再通过身份验证。

先完成上一步的验证。退出登录会移除实时 API 检查所需的授权。本实验没有创建云资源,因此不需要删除任何应用或账户。

运行 Wrangler 的退出登录命令:

npx wrangler logout

然后确认明确的未通过身份验证状态:

npx wrangler whoami --json

在结构化输出中查找 "loggedIn": false。在此 Wrangler 版本中,退出登录后该命令还会以非零状态码退出;在这里这是预期行为。仅出现网络错误而没有这个明确状态,不能证明已经退出登录。使用此步骤的验证按钮独立确认结果。

你还可以在 Dashboard 的 My Profile → Access Management → Connected Applications 中查看应用授权;授权页面提供了指向该位置的链接。Cloudflare 允许你在此管理或撤销应用访问权限。只撤销你打算移除的授权;其他环境可能正在使用同一个应用。

退出 Wrangler 不会删除你的 Cloudflare 学习账户,也不会让浏览器退出 Dashboard。保留该账户,以便后续课程使用。wrangler.jsonc 文件包含的是标识符而不是凭据,但它不能为新虚拟机提供授权。下一个实验会从全新的环境开始,并执行自己的连接步骤。

如果你在此之后重新运行前面步骤的验证,验证失败是预期结果。只有在你打算重复本练习时才重新授权,完成后再次退出登录。

总结

你通过 Cloudflare 的设备授权流程授权了远程 LabEx 虚拟机,选择了自己的学习账户,并通过独立进程验证了实时账户访问权限。随后,你退出了 Wrangler,并检查了明确的未通过身份验证状态。

你的学习账户仍可用于课程学习。浏览器登录、虚拟机授权和所选账户是连接过程中的不同部分;每次启动全新的环境时,都要检查这三项。