配置 Cloudflare Zero Trust Access
本页仅适用于 AUTH_PROVIDER=cloudflare。启用 Zero Trust 后,在 Actions 填好 Token 与 ADMIN_EMAIL 即可;Action 会自动创建/复用应用、OTP、邮箱策略,并取得 Team Domain/AUD。以下控制台步骤仅供手工维护与排障。
使用原生 AUTH_PROVIDER=github 时无需本页配置,改看 GitHub OAuth。不要把原生 GitHub 模式和 Access 中的 GitHub IdP 混为一谈。
使用明确身份
推荐“明确邮箱 + Allow”。不要使用 Everyone、Bypass,也不要只按登录方式放行所有能够接收验证码的人。
1. 准备登录方式
个人部署可以使用一次性 PIN(One-time PIN)邮件验证码。若 Zero Trust 组织中没有该选项:
- 进入 Zero Trust → 集成(Integrations)→ 身份提供程序(Identity providers)。
- 选择 添加新的身份提供程序(Add new identity provider)。
- 添加 一次性 PIN(One-time PIN) 并保存。
如果已经配置 Google、GitHub、Microsoft Entra ID 或其他身份提供程序,可以继续使用已有方式。
2. 创建自托管(Self-hosted)应用
- 进入 Zero Trust → 访问控制(Access controls)→ 应用程序(Applications)。
- 选择 创建新应用程序(Create new application)。
- 选择 自托管和私有应用(Self-hosted and private)。
- 添加公共主机名(Public hostname)。
- **应用程序名称(Application name)**填写
EdgeSSH。 - **公共主机名(Public hostname)**填实际入口;推荐使用
CUSTOM_DOMAIN对应的自定义域名,只有未配置它时才使用edgessh.<子域>.workers.dev。

3. 添加 Allow 策略
在应用的**访问策略(Access policies)**中创建策略:
| 项目 | 推荐值 |
|---|---|
| 策略名称(Policy name) | EdgeSSH Admin |
| 操作(Action) | 允许(Allow) |
| 规则类型(Rule type) | 包括(Include) |
| 选择器(Selector) | 电子邮件(Emails) |
| 值(Value) | 你的完整管理员邮箱 |
本项目只有一个管理员资料库,请只允许明确管理员。不要使用整域授权、Everyone 或 Bypass;增加可登录身份相当于授予其整个管理员资料库权限。

4. 获取 Team Domain
Action 自动取得并保存 ACCESS_TEAM_DOMAIN 到 Worker Secret,不用复制回 GitHub。排障时可在 Zero Trust 设置(Settings)中找到团队域(Team domain):
my-team.cloudflareaccess.com不要带 https://、路径或末尾斜杠。
5. 获取 Application Audience
- 回到 访问控制(Access controls)→ 应用程序(Applications)。
- 打开刚创建的 EdgeSSH 应用。
- 在其他设置(Additional settings)中找到应用受众 (AUD) 标签(Application Audience (AUD) Tag)。
- 核对当前应用的 AUD。Action 会自动将其写入 Worker
ACCESS_AUDSecret,无需手工复制。
不要把应用 ID、Client ID 或策略 ID 当成 AUD。
6. 验证 Access 本身
在运行 Deploy workflow 前,也可以先访问自定义域名验证外层策略:
- 未登录时应先出现 Cloudflare Access 登录页。
- 不在 Allow 策略内的邮箱不能进入。
- 允许的邮箱能够完成认证。

常见问题
One-time PIN 收不到邮件
先确认策略中的 Emails 与登录邮箱完全一致。Cloudflare 不会向未被策略允许的邮箱发送验证码,但页面可能仍显示已发送,避免泄露访问名单。
登录后提示 Access 登录已失效
通常是以下三项没有对应同一个应用:
- 正在访问的自定义域名。
ACCESS_TEAM_DOMAIN所属 Zero Trust 组织。ACCESS_AUD所属 Self-hosted 应用。
页面没有出现 Access 登录
确认 Access 应用 Public hostname 与实际访问域名一致;workers.dev 和自定义域名均可作正式入口,但应保护实际使用的那个 hostname。