Skip to content

使用 GitHub Actions 部署 ​

先确定访问域名,再选一种登录方式,填对应变量并运行一次 Deploy。 应用始终部署到 Cloudflare Workers;AUTH_PROVIDER 只决定管理员怎样登录,不是选择云服务商。

1. Fork、确定域名并准备 Token ​

Fork EdgeSSH,启用 Actions。在仓库 设置(Settings)→ 机密和变量(Secrets and variables)→ Actions 中保存 CLOUDFLARE_API_TOKEN Secret。

多数用户建议准备一个由同一 Cloudflare 账户管理的自定义域名,例如 ssh.example.com,并将主机名保存为 CUSTOM_DOMAIN Variable。只填主机名,不带 https://、路径或通配符。Action 会自动绑定 Worker,Cloudflare 负责 DNS 与证书。

不打算使用自定义域名时,可将 CUSTOM_DOMAIN 留空,Action 会使用 workers.dev 地址;不要把 *.workers.dev 填进该变量。Token 权限见创建 API Token。账户 ID、D1 ID 和加密密钥通常不需要填写。

2. 二选一填写配置 ​

方案 A:Cloudflare Access ​

适合已经启用 Zero Trust 的用户。先完成 Cloudflare Zero Trust 的组织开通与团队域设置,再填写:

名称保存位置值
AUTH_PROVIDERVariablecloudflare(不填也默认此模式)
CLOUDFLARE_API_TOKENSecret含 Access/IdP 管理权限的 Cloudflare Token
CUSTOM_DOMAINVariable推荐填写实际主机名,如 ssh.example.com;使用 workers.dev 时留空
ADMIN_EMAILVariable你的管理员邮箱;也可在 Run workflow 输入

Action 自动创建/复用 Access 应用、明确邮箱 Allow 策略与 OTP,获取 Team Domain 和 AUD,并写入 Worker Secrets。不需要手工复制这些参数。

方案 B:原生 GitHub OAuth ​

不需要开通 Cloudflare Zero Trust,也不需要 Access/IdP 权限。 这不是在 Access 中添加 GitHub 身份提供程序,而是直接由 EdgeSSH 验证 GitHub 登录。

名称保存位置值
AUTH_PROVIDERVariablegithub
CLOUDFLARE_API_TOKENSecretWorkers/D1 部署 Token
CUSTOM_DOMAINVariable推荐填写实际主机名,如 ssh.example.com;使用 workers.dev 时留空
GH_CLIENT_IDVariableGitHub OAuth App 的 Client ID
GH_CLIENT_SECRETSecret同一 OAuth App 的 Client Secret
GH_ADMINVariable唯一允许登录的个人 GitHub 用户名
GH_ADMIN_IDVariable通常不填;仅显式更换管理员时填写数字用户 ID

第一次使用建议直接按 GitHub OAuth 五步教程操作,其中逐项说明了个人 OAuth App 页面、Fork 的 Variables/Secrets 页签、预期结果与出错阶段。回调地址为 https://你的入口/auth/callback。GitHub 模式不填管理员邮箱,也不填任何 Access 参数。

不要混淆 Variable 与 Secret

API Token、Client Secret 和加密密钥不能放普通 Variable。其他模式遗留的变量不参与认证;工作流只验证当前模式必需的值。

旧版的 GITHUB_CLIENT_ID、GITHUB_CLIENT_SECRET、GITHUB_ADMIN、GITHUB_ADMIN_ID 必须迁移到对应的 GH_* 名称;GITHUB_ 是 GitHub 保留前缀,不能用于 Actions 配置。

3. 运行 Deploy ​

进入 Actions → Deploy → 运行工作流(Run workflow),选择 main。Cloudflare 模式可在邮箱框输入管理员邮箱;GitHub 模式留空。

工作流依次执行:

  1. 配置格式校验、类型检查、测试、构建和 dry-run。
  2. 发现账户;有 CUSTOM_DOMAIN 时绑定自定义域名,否则获取 workers.dev 子域。多账户 Token 才需额外指定 CLOUDFLARE_ACCOUNT_ID。
  3. 只配置所选认证方式,按名称或显式 ID 复用 D1。
  4. 沿用旧库唯一资料所有者 ID,新库使用固定管理员 ID。
  5. 首次生成加密密钥,后续保留原值;执行数据库迁移。
  6. 通过标准输入同步所需 Secret 并部署,检查当前模式必需的 Secret 是否存在。
  7. GitHub 模式实际检查 /auth/login 能签发 Cookie 并返回正确的 GitHub 302,以及未登录的 /api/auth/me 返回 401;失败则停止,不把上传成功当作登录可用。
  8. 在运行摘要给出访问地址;GitHub 模式另给出 OAuth 回调地址,随后必须完成一次真实授权。

填写 CUSTOM_DOMAIN 后,以 https://你的自定义域名 作为唯一正式入口并关闭备用 workers.dev 入口。只有留空时,才默认访问 https://edgessh.<你的 Workers 子域>.workers.dev。

EdgeSSH Deploy 成功记录示例
历史界面示例;当前运行成功后会在摘要给出入口与认证模式。

4. 登录与验收 ​

  • Cloudflare 模式:入口先跳 Access,只允许指定邮箱登录。
  • GitHub 模式:首页点击「登录」前往 GitHub;只有 GH_ADMIN 对应账号可以进入。
  • 登录后检查主机列表,使用真实已授权目标验收 SSH、SFTP 与进程面板。

详见部署后验收。只看到网页,不代表登录与 SSH 已通过验收。

更新与切换 ​

以后推送 main 或重跑 Deploy 即可,复用原 Worker、D1 和加密密钥。切换 AUTH_PROVIDER 后仍是一位管理员、同一份主机资料,不需要绑定两套账号。

旧版点击 GitHub 登录直接返回“服务暂时不可用”时,先同步含 2026-10-07 Base64 解码修复的最新 main 再运行 Deploy;不要只是重跑旧提交,也不要换密钥或扩大 Access 权限。见已有用户修复。

若旧域名还在 Access 网关后面,切换 GitHub 前先解除该域名的旧保护,避免双重登录;脚本不会擅自删除安全策略。完整步骤见切换登录方式。

面向个人管理员的 Cloudflare 边缘 SSH 工作台