关于 cloudflare-tunnel
此技能说明如何通过 Cloudflare Access 访问受保护的服务,面向需要在命令行中发送 HTTP 请求的用户。它涵盖服务令牌请求头,并示范与其他身份验证方式组合使用。
主要功能
- 01配置 Cloudflare Access 请求头
- 02发送多种 HTTP 方法请求
- 03组合服务自身的身份验证
- 04提交 JSON 请求体和下载文件
适用场景
- 01调用受 Cloudflare Access 保护的 API
- 02向受保护服务提交 JSON 数据
- 03下载受保护服务中的文件
- 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 正在运行 |
提示
- 标头顺序不重要——CF 标头可以出现在请求中的任何位置
- 适用于任何 HTTP 方法——GET、POST、PUT、DELETE 等
- 可与其他身份验证方式结合使用——CF Access + 基本身份验证、Bearer Token 等
- 令牌轮换——定期在 Zero Trust 控制面板中轮换密钥
API 参考
- Cloudflare Access:https://developers.cloudflare.com/cloudflare-one/identity/service-tokens/
- Zero Trust 控制面板:https://one.dash.cloudflare.com/
评论
支持 Markdown