Cloudflared Tunnel无法正常转发SSH请求的问题求助
问题排查方案
1. 优先修正ProxyCommand拼写错误
你当前SSH Config里的cloudflared acess ssh存在拼写错误,正确命令应为cloudflared access ssh(缺少字母c),这是导致连接中断的高频原因。修正后的ProxyCommand行如下:
ProxyCommand cloudflared access ssh --hostname %h
若客户端机器的PATH未包含cloudflared路径,需指定完整执行路径,例如:
ProxyCommand /usr/local/bin/cloudflared access ssh --hostname %h
2. 验证隧道运行状态
- 在服务器端执行
cloudflared tunnel list,确认目标隧道状态为active; - 执行
cloudflared tunnel info <你的隧道UUID>,检查ingress规则是否正确加载,确认my-uuid.cfargotunnel.com对应的服务为ssh://localhost:22; - 重启隧道并查看Debug日志,排查启动异常:
cloudflared tunnel stop <隧道UUID> cloudflared tunnel run --loglevel debug <隧道UUID>
日志中若出现凭证文件读取失败、ingress规则匹配错误等信息,对应调整路径或修正YAML格式。
3. 检查Cloudflare Access规则(若使用Access)
如果依赖Cloudflare Access进行身份验证,需在Cloudflare控制台确认:
- 进入Zero Trust > Access > Applications,已为
my-uuid.cfargotunnel.com创建Access应用,且规则允许你的客户端访问(如允许指定IP/用户); - 若无需Access验证,仅需隧道转发SSH,可调整配置:
- 服务器端保持原
config.yml不变,启动命令改为:cloudflared tunnel run <隧道UUID> - 客户端SSH Config修改为:
Host my-test HostName my-uuid.cfargotunnel.com User someuser IdentityFile /path/to/key ProxyCommand cloudflared tunnel --url ssh://localhost:22 ssh %h %p
- 服务器端保持原
4. 修正凭证文件权限
服务器端的凭证JSON文件权限必须设为600,否则cloudflared无法读取:
chmod 600 /home/path/to/my-uid.json
5. 同步cloudflared版本
客户端与服务器端的cloudflared版本尽量保持一致,避免兼容性问题:
- 两端分别执行
cloudflared -v查看版本; - 版本差异较大时,执行升级命令:
cloudflared update
6. 验证服务器端SSH配置(可选)
虽然局域网连接正常,仍可确认sshd_config关键配置:
- 确保
PubkeyAuthentication yes(密钥登录场景)或PasswordAuthentication yes(密码登录场景); - 重启sshd服务:
systemctl restart sshd
内容的提问来源于stack exchange,提问作者ibrahim tanyalcin
相关产品推荐
相关产品推荐

