记一次使用Cloudflare tunnel的流程遇到的问题以及解决办法。
最开始是通过服务器本地的cloudflared tunnel创建隧道,但是后来发现如果只是简单的使用场景,比如只是连接ssh或者某一个端口,cf网页端端功能已经足够使用(其实是配置config.yml有点麻烦)。
本地创建隧道
- 依次使用以下命令
// 登录完成后会在当前用户目录的.cloudflared目录生成.cert认证文件
cloudflared login
// 创建隧道,此操作会在用户目录的.cloudflared目录生成config.yml配置文件
cloudflared tunnel create tunnelName
// 查看可用隧道列表
cloudflared tunnel list
//ingress 配置文件设置
tunnel: 12345678-aaaa-bbbb-cccc-1234567890ab
credentials-file: /home/youruser/.cloudflared/12345678-aaaa-bbbb-cccc-1234567890ab.json
ingress:
- hostname: example.yourdomain.com
service: ssh://localhost:22
- service: http_status:404 // 重要:一定要加这一行,不然报错
// 运行隧道
cloudflared run tunnelName
// 开机运行
cloudflared service install
// 客户端连接(例如:ssh)
cloudflared access ssh --hostname example.domain.com --URL localhost:22
网站后台创建隧道
直接根据网站提示即可创建完成,然后在服务器端执行网站提供的命令即可。在客户端再执行上面的命令即可。
遇到的问题
-
websocket: bad handshake
-
SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.13
提示
一个Tunnel配合多个hostname足够日常使用场景,不需要多个Tunnel,反而增加管理复杂度。
一个Tunnel配合多个hostname足够日常使用场景,不需要多个Tunnel,反而增加管理复杂度。