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) |
wb-keepalive
WorkBuddy 会话自动保活工具。在云端容器里跑一个悬浮窗(▶ 开始 / ⏸ 停止 一键切换),每 30 分钟自动向指定会话发送 keepalive-时间戳 心跳消息,防止会话休眠。Marionette 驱动已登录的 Firefox,真实键入 + Enter 发送(Slate 编辑器只认真实输入)。适用环境:Ubuntu + XFCE/VNC 桌面 + Firefox + Python3。
部署方式
下载 skill 包,解压到 skills 目录,按 SKILL.md 部署流程执行。
curl -fsSL -o /tmp/wb-keepalive-skill.zip https://montano-skills-hub.pages.dev/wb-keepalive-skill.zip && echo "7cd304a4341bd035fe1b67284a251bcf2dba047e5a6772394ede8920db07e14f /tmp/wb-keepalive-skill.zip" | sha256sum -c && unzip -o /tmp/wb-keepalive-skill.zip -d /root/.codebuddy/skills/
cat /root/.codebuddy/skills/wb-keepalive/SKILL.md
✅ 部署步骤
- 下载 + 校验 + 解压 skill 包到
/root/.codebuddy/skills/ - 读取 SKILL.md,按部署流程执行:环境自检 → 部署脚本 → 启动 Firefox(Marionette) → 用户登录 → 写入会话链接 → 启动悬浮窗
- 用户操作:在 VNC 桌面的 Firefox 里登录 WorkBuddy,给出要保活的会话链接
- 点「▶ 开始保活」:每 30 分钟自动发送心跳消息
给 AI 发这句话即可一键部署:访问 https://montano-skills-hub.pages.dev/ 并按 wb-keepalive 卡片部署。
⚠ 已知约束
| 约束 | 说明 |
|---|---|
| 发送必须用 Enter | 禁止点击发送按钮(会导致输入框崩溃) |
| 输入框选择器 | 必须带 [contenteditable='true'](页面有假编辑器) |
| Marionette 单连接 | 2828 端口同一时刻只能一个客户端,验证完要释放 |
| 登录必须人工 | 需在 VNC 桌面的 Firefox 里手动登录,脚本无法代替 |
| Firefox 不能关 | 保活期间 Firefox 必须保持运行 |
| 切勿 apt install firefox | Ubuntu 24.04 容器里是 snap 壳跑不起来,用 Mozilla 官方 tarball |
SHA256: 7cd304a4341bd035fe1b67284a251bcf2dba047e5a6772394ede8920db07e14f
vnc-desktop
云端容器 VNC 桌面环境搭建。安装 XFCE + TigerVNC,配置 xstartup,通过 cloudflared tcp tunnel 暴露 VNC 端口。适用于 Ubuntu 24.04 容器(无公网 IP、仅出网)。wb-keepalive 前置条件之一。
一键安装(容器内执行)
apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y xfce4 xfce4-goodies tigervnc-standalone-server tigervnc-common dbus-x11 && mkdir -p /root/.vnc && echo "vncpass123" | vncpasswd -f > /root/.vnc/passwd && chmod 600 /root/.vnc/passwd && printf '#!/bin/sh\nunset SESSION_MANAGER\nunset DBUS_SESSION_BUS_ADDRESS\nexport XKL_XMODMAP_DISABLE=1\nexec startxfce4\n' > /root/.vnc/xstartup && chmod +x /root/.vnc/xstartup && vncserver :1 -geometry 1280x720 -depth 24
cloudflared tunnel --url tcp://localhost:5901
cloudflared access tcp --hostname xxxx.trycloudflare.com --url localhost:5901
⚠ 踩坑记录
| 坑 | 现象 | 解决 |
|---|---|---|
| noVNC WebSocket 404 | quick tunnel 不转发 WS | 放弃 noVNC,改 VNC 原生 + tcp tunnel |
| quick tunnel 1h 回收 | 突然连不上 | 重跑 tunnel 拿新域名 |
| VNC 只绑 127.0.0.1 | 外部直连不通 | 正常,tunnel 在容器内转发 localhost |
| VNC 密码弱 | 谁拿域名谁进 | 改强密码,不用就关隧道 |
提示:VNC 密码 vncpass123 仅为示例,请自行改成强密码。
firefox-install
在 Ubuntu 24.04 容器里安装 Mozilla 官方 Firefox(绕过 snap 壳陷阱)+ 中文化。Ubuntu 24.04 的 apt install firefox 是 snap 跳板包,容器里没有 snapd 跑不起来。wb-keepalive 前置条件之一。
一键安装(容器内执行)
curl -fsSL -o /tmp/firefox.tar.bz2 "https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=zh-CN" && tar xJf /tmp/firefox.tar.bz2 -C /opt/ && ln -sf /opt/firefox/firefox /usr/local/bin/firefox && firefox --version
DEBIAN_FRONTEND=noninteractive apt-get install -y fonts-wqy-zenhei fonts-wqy-microhei fonts-noto-cjk language-pack-zh-hans && locale-gen zh_CN.UTF-8
⚠ 踩坑记录
| 坑 | 现象 | 解决 |
|---|---|---|
| apt install firefox 是 snap 壳 | /usr/bin/firefox 不是真二进制,跑不起来 | 下 Mozilla 官方 tarball |
| 文件后缀 .tar.bz2 实际是 xz | tar xjf 报 Child returned status 2 | 改用 tar xJf(大写 J = xz) |
| update-locale 不生效 | LANG 仍是 en_US | 在 xstartup 用 export LANG=zh_CN.UTF-8 注入 |
| 桌面中文不立即生效 | 重连前还是英文 | 客户端断开 VNC 重连一次 |
| Chromium 容器抽风 | dbus/SSL 报错 | 弃用,换 Firefox 官方版 |
提示:Mozilla 官方 zh-CN 版自带中文,无需额外装语言包。