申请 Token 的详细步骤:
或直接访问:https://cnb.cool/profile/token/create

curl -o keep_alive.sh https://cnb.cool/kfc50/cnb-live/-/git/raw/main/keep_alive.sh && chmod 777 ./keep_alive.sh && ./keep_alive.sh --token YOUR_TOKEN
curl -o keep_alive.sh https://cnb.cool/kfc50/cnb-live/-/git/raw/main/keep_alive.sh && chmod 777 ./keep_alive.sh && ./keep_alive.sh --token YOUR_TOKEN --repo username/repo
在 CNB 的在线 VSCode 网页运行时,不需要 --repo 参数。这是因为在线 VSCode 网页自动关联登录了该 cnb.cool 的 git 仓库,网站开发者已经自动配置了关联 git 的 SSH、key 等信息。
使用 git remote -v 就能直接看到仓库地址:
git remote -v
输出示例:
origin https://cnb.cool/kfc50/cnb-live.git (fetch) origin https://cnb.cool/kfc50/cnb-live.git (push)
本代码通过正则表达式提取其中的 kfc50/cnb-live,也就是 用户名/仓库名 作为仓库名。
获取到 CNB 储存库地址后,再通过官方 API 获取工作空间列表,从中提取 SN 值。
API 接口:
GET https://api.cnb.cool/workspace/list?branch=main&page=1&pageSize=20&slug={repository_name}&status=running
参数说明:
slug: 仓库名称,如 kfc50/cnb-livestatus: 过滤运行中的工作空间SN 说明:
SN 就是启动的在线 VSCode 链接中的工作空间标识。
例如:https://cnb-i18-1jjhmmo6i-001.cnb.space/?folder=/workspace 中的 cnb-i18-1jjhmmo6i-001 就是 SN。
获取到 SN 后,再调用工作空间详情 API 获取 SSH 连接命令。
API 接口:
GET https://api.cnb.cool/{repository_name}/-/workspace/detail/{sn}
API 响应中包含 SSH 连接命令,格式如:
{
"ssh": "ssh cnb-i18-1jjhmmo6i-001.26908de7-09ea-4855-be13-e49b96d67fdf-mm8@cnb.space"
}
手动获取 SSH 命令的替代方法:
方法一:通过我的云原生开发页面

方法二:通过启动工作空间时显示
点击黄色的「云原生开发」按钮启动工作空间时,页面会显示 SSH 命令。 注意:需要浏览器显示为电脑版 User Agent 才能看到 SSH 命令。

脚本会定时运行这个 SSH 命令来保持连接:
具体命令:
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -N cnb-i18-1jjhmmo6i-001.26908de7-09ea-4855-be13-e49b96d67fdf-mm8@cnb.space
参数说明:
-o StrictHostKeyChecking=no: 跳过主机密钥检查-o UserKnownHostsFile=/dev/null: 不保存主机密钥-N: 不执行远程命令,仅建立连接RECONNECT_INTERVAL_OVERRIDE 覆盖默认值export RECONNECT_INTERVAL_OVERRIDE=600 # 设置为 10 分钟
脚本会将 SSH 命令保存到 config.json 文件中:
{
"ssh_command": "ssh cnb-i18-1jjhmmo6i-001.26908de7-09ea-4855-be13-e49b96d67fdf-mm8@cnb.space"
}
Ctrl+C 可优雅退出脚本