mcpField
C
cloudflare-tunnel

cloudflare-tunnel

github.com/okou-ai云与 DevOps81909 次安装1 周前更新
代码仓库

关于 cloudflare-tunnel

此技能说明如何通过 Cloudflare Access 访问受保护的服务,面向需要在命令行中发送 HTTP 请求的用户。它涵盖服务令牌请求头,并示范与其他身份验证方式组合使用。

主要功能

  1. 01配置 Cloudflare Access 请求头
  2. 02发送多种 HTTP 方法请求
  3. 03组合服务自身的身份验证
  4. 04提交 JSON 请求体和下载文件

适用场景

  1. 01调用受 Cloudflare Access 保护的 API
  2. 02向受保护服务提交 JSON 数据
  3. 03下载受保护服务中的文件
  4. 04排查 401、403 或连接错误

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/okou-ai/okou-skills --skill cloudflare-tunnel

安装后在 Claude Code 中输入/cloudflare-tunnel确认已加载。

详细介绍

用法

基本 curl 请求

添加两个标头,以通过 Cloudflare Access 进行身份验证:

curl -s \
  -H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
  -H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET" \
  "https://your-protected-service.example.com/api/endpoint"
使用额外的身份验证

许多服务既需要 Cloudflare Access,也需要自己的身份验证:

curl -s \
  -H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
  -H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET" \
  -H "Authorization: Bearer $API_TOKEN" \
  "https://your-protected-service.example.com/api/endpoint"
使用基本身份验证
curl -s \
  -H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
  -H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET" \
  -u "username:password" \
  "https://your-protected-service.example.com/api/endpoint"
使用 JSON 请求正文发送 POST 请求

写入 /tmp/request.json:

{
  "key": "value"
}

然后运行:

curl -s -X POST \
  -H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
  -H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET" \
  -H "Content-Type: application/json" \
  -d @/tmp/request.json \
  "https://your-protected-service.example.com/api/endpoint"
下载文件
curl -s -o /tmp/output.file \
  -H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
  -H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET" \
  "https://your-protected-service.example.com/file"
跳过 SSL 验证(自签名证书)

对于使用自签名证书的服务,添加 -k 标志:

curl -k -s \
  -H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
  -H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET" \
  "https://your-protected-service.example.com/api/endpoint"

必需的标头

标头值描述
CF-Access-Client-Id<client-id>.access服务令牌客户端 ID
CF-Access-Client-Secret<secret>服务令牌客户端密钥

常见错误

错误原因解决方案
403 Forbidden标头无效或缺失检查客户端 ID 和密钥
403 Forbidden访问策略中未包含令牌将令牌添加到应用的访问策略中
401 Unauthorized服务自身的身份验证失败检查服务专用凭据
Connection refused隧道未运行确认 cloudflared 正在运行

提示

  1. 标头顺序不重要——CF 标头可以出现在请求中的任何位置
  2. 适用于任何 HTTP 方法——GET、POST、PUT、DELETE 等
  3. 可与其他身份验证方式结合使用——CF Access + 基本身份验证、Bearer Token 等
  4. 令牌轮换——定期在 Zero Trust 控制面板中轮换密钥

API 参考

评论

支持 Markdown