cloudflared-ssh
让任何云 Linux 机器通过 Cloudflare quick tunnel 实现 SSH 公网访问,无需公网 IP、自有域名或 Cloudflare 账号。一条命令安装 sshd + cloudflared、配置 root 密码(可自定义,留空则生成随机 16 位密码)、启动 tunnel 并输出连接信息。支持 x86_64 / aarch64 多架构,附 stop.sh 关闭暴露、status.sh 查看域名。适用于临时远程访问、演示、无公网 IP 的云/内网机器。
安装方式
每条命令复制时自带安全声明注释(以 # 开头),粘贴给 AI 时它会看到用户已知情授权。
方式 A 已废弃(此 skill 未上架 OpenClaw,命令不可用);方式 B 无需 OpenClaw,直接可用。
A. OpenClaw 用户(已废弃)
本机
openclaw skills install @montano/cloudflared-ssh
B. 通用方式(无需 OpenClaw)
远端
curl -fsSL https://montano-skills-hub.pages.dev/skills/cloudflared-ssh/scripts/setup.sh -o setup.sh && sudo bash setup.sh --bare
本机
ssh -o ProxyCommand="cloudflared access ssh --hostname %h" root@xxxx.trycloudflare.com
✅ 正确步骤(3 步)
- 远端 Linux 机器:执行
sudo bash setup.sh --bare,拿到一条带真实域名的ssh命令 - 本机:复制 setup.sh 输出的那条
ssh -o ProxyCommand=... root@真实域名,粘贴到终端按回车,直接进
不需要 install.sh、不需要配 ~/.ssh/config、不需要记密码,一条命令直连。
⚠ 踩坑记录(v1.2.0 修正)
| 坑 | 现象 | 改法 |
|---|---|---|
| 域名带 https:// 前缀 | cloudflared access ssh 解析失败 | HostName 一律用裸域名;v1.2.0 setup.sh 已输出裸域名 |
| setup.sh 不在本地 | 报"找不到文件" | 先 curl 下载再执行 |
| install.sh 写占位域名 | ssh sandbox 连到错误主机 | v1.2.0 支持传参 bash -s -- 域名 自动填入 |
| root + 密码 + 公网暴露 | 等于公网开 root SSH | 用 --no-root 或连上后立即 passwd |
| 隧道临时、休眠即亡 | 闲置约 1h 后域名失效 | 用 stop.sh / status.sh 管理;别长期依赖 |
| 两命令在同机跑 | 分工错乱、配置无效 | 严格区分本机 install / 远端 setup |
| github 被墙 | 下载 cloudflared 失败 | setup.sh 自动改走 pkg.cloudflare.com(仅 amd64) |