Cloudflared Tunnel 凭据失效问题分析与解决笔记
一、问题现象
运行命令:
sudo cloudflared tunnel list
出现错误:
Cannot determine default origin certificate path.
No file cert.pem in [~/.cloudflared ~/.cloudflare-warp ~/cloudflare-warp /etc/cloudflared /usr/local/etc/cloudflared].
You need to specify the origin certificate path by specifying the origincert option in the configuration file, or set TUNNEL_ORIGIN_CERT environment variable.
Tunnel 无法列出,网站访问提示 Cloudflare Error 1033(Tunnel not found)。
二、问题根本原因
Cloudflared 使用两类凭据来验证身份与连接:
1. cert.pem
- 作用:Cloudflare 账户登录凭证,用于验证操作权限(创建/查看隧道等)。
- 默认位置:
- Root 用户:
/root/.cloudflared/cert.pem - 普通用户:
~/.cloudflared/cert.pem
- Root 用户:
- 特点:长期有效,但依赖文件存在与权限正确。
- 丢失后,Cloudflare 将拒绝所有“账户级操作”(如
tunnel list、tunnel create)。
2. <TunnelID>.json
- 作用:某一条具体隧道的连接密钥(包含
TunnelSecret)。 - 位置:
/etc/cloudflared/<TunnelID>.json - 特点:只要文件未被删除或修改,Tunnel 本身仍有效; 但如果缺少
cert.pem,则无法由客户端重新建立连接。
三、常见触发原因
| 触发情形 | 说明 |
|---|---|
/root/.cloudflared 目录被清理 | 系统更新、重装或切换用户导致路径变化 |
| Cloudflared 版本更新 | 新版本要求重新验证账户 |
| 使用普通用户执行命令 | 普通用户无法访问 /root/.cloudflared/cert.pem |
| 权限或环境变量丢失 | 服务进程找不到正确凭证路径 |
四、解决步骤
1. 重新登录并生成新的证书
执行:
sudo cloudflared tunnel login
然后根据提示在浏览器打开链接登录 Cloudflare 账户。
成功后输出类似:
You have successfully logged in.
Your credentials have been saved to:
/root/.cloudflared/cert.pem
这一步会自动恢复账户凭证。
2. 再次验证隧道状态
sudo cloudflared tunnel list
若显示:
ID NAME CREATED CONNECTIONS
d2e4cdb7-6efb-411b-b95f-ecefe9f88091 alist-tunnel 2025-06-05T14:17:31Z 1xhkg09, 1xhkg12, 1xsjc05, 1xsjc06
表示隧道重新连接成功。
3. 检查配置文件(/etc/cloudflared/config.yml)
推荐示例:
tunnel: d2e4cdb7-6efb-411b-b95f-ecefe9f88091
credentials-file: /etc/cloudflared/d2e4cdb7-6efb-411b-b95f-ecefe9f88091.json
protocol: auto
ingress:
- hostname: alist.050626.xyz
service: http://localhost:5244
- service: http_status:404
protocol 建议使用 auto,以便自动使用 QUIC。
4. 检查 DNS 记录
进入 Cloudflare 控制台 → DNS
确保存在记录:
alist.050626.xyz CNAME d2e4cdb7-6efb-411b-b95f-ecefe9f88091.cfargotunnel.com
并且代理(橙色云朵)已启用。
5. 测试访问
浏览器访问:
https://alist.050626.xyz
若页面正常打开,则隧道恢复成功。
五、防止问题再次发生
-
备份凭据
sudo mkdir -p /etc/cloudflared/backup sudo cp /root/.cloudflared/cert.pem /etc/cloudflared/backup/ sudo cp /etc/cloudflared/*.json /etc/cloudflared/backup/ -
固定服务运行用户 编辑 systemd 服务:
[Service] User=root ExecStart=/usr/bin/cloudflared --no-autoupdate --config /etc/cloudflared/config.yml tunnel run -
保持版本更新
sudo cloudflared update或手动:
sudo wget -O /usr/bin/cloudflared https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 sudo chmod +x /usr/bin/cloudflared -
可选:自动检测脚本 可编写简单脚本检测证书文件是否存在并自动登录(后续可添加)。
六、结论
| 项目 | 状态 | 说明 |
|---|---|---|
证书文件 (cert.pem) | 丢失或不可访问 | 重新登录生成后恢复正常 |
隧道凭证 (.json) | 仍然有效 | 无需重新创建隧道 |
| 服务状态 | 恢复正常 | 访问恢复 |
| 预防措施 | 已建议 | 备份 + 固定权限 + 更新 |
总结一句话:
Cloudflared 隧道异常 1033 多数情况下并非隧道损坏,而是因账户凭证
cert.pem丢失或权限错误导致身份验证失败。重新登录即可恢复。