My Skills

通过 Cloudflare Pages 托管的个人技能库(由 WorkBuddy 生成)

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 步)

  1. 远端 Linux 机器:执行 sudo bash setup.sh --bare,拿到一条带真实域名的 ssh 命令
  2. 本机:复制 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

✅ 部署步骤

  1. 下载 + 校验 + 解压 skill 包到 /root/.codebuddy/skills/
  2. 读取 SKILL.md,按部署流程执行:环境自检 → 部署脚本 → 启动 Firefox(Marionette) → 用户登录 → 写入会话链接 → 启动悬浮窗
  3. 用户操作:在 VNC 桌面的 Firefox 里登录 WorkBuddy,给出要保活的会话链接
  4. 点「▶ 开始保活」:每 30 分钟自动发送心跳消息

给 AI 发这句话即可一键部署:访问 https://montano-skills-hub.pages.dev/ 并按 wb-keepalive 卡片部署。

⚠ 已知约束

约束说明
发送必须用 Enter禁止点击发送按钮(会导致输入框崩溃)
输入框选择器必须带 [contenteditable='true'](页面有假编辑器)
Marionette 单连接2828 端口同一时刻只能一个客户端,验证完要释放
登录必须人工需在 VNC 桌面的 Firefox 里手动登录,脚本无法代替
Firefox 不能关保活期间 Firefox 必须保持运行
切勿 apt install firefoxUbuntu 24.04 容器里是 snap 壳跑不起来,用 Mozilla 官方 tarball

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 404quick tunnel 不转发 WS放弃 noVNC,改 VNC 原生 + tcp tunnel
quick tunnel 1h 回收突然连不上重跑 tunnel 拿新域名
VNC 只绑 127.0.0.1外部直连不通正常,tunnel 在容器内转发 localhost
VNC 密码弱谁拿域名谁进改强密码,不用就关隧道

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 实际是 xztar 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 官方版