自动配置 CNB 工作空间的 SSH 连接
cnbssh 是一个轻量级命令行工具,用于自动获取 CNB 平台当前运行中的工作空间信息,并在本地生成 SSH 配置,实现通过 ssh cnbssh 快速连接到 CNB 云端工作空间。
~/.ssh/conf/cnb.conf)~/.ssh/config 中添加 Include conf/*.conf 指令(幂等,不会重复添加)cnbssh1、cnbssh2 等别名配置~/.ssh/conf/cnbssh_mapping.json)记录别名与 slug 的对应关系~/.ssh/config 包含 Include conf/*.conf,并创建 ~/.ssh/conf 目录~/.ssh/conf/cnb.conf~/.ssh/conf/cnbssh_mapping.json从 Releases 下载对应平台的二进制文件。
或从源码编译:
git clone https://cnb.cool/devopsapi/cnbssh.git
cd cnbssh
make build
# 设置 CNB 工作空间 Token
export CNB_WS_TOKEN="your_token_here"
# 运行(自动配置并连接 SSH 终端)
./bin/cnbssh
当只有一个运行中的工作空间时,执行 cnbssh 会自动连接,无需额外操作。
当有多个运行中的工作空间时,cnbssh 会显示交互式选择菜单:
检测到多个运行中的工作空间
╔══════════════════════════════════════════════╗
║ 检测到多个运行中的工作空间 ║
╠══════════════════════════════════════════════╣
║ [1] cnbssh1 devopsapi/myproject ║
║ [2] cnbssh2 myorg/another-project ║
╚══════════════════════════════════════════════╝
请选择要连接的工作空间 (输入编号 1-2):
选择后即可直接进入对应的远程终端。
也可以在配置写入后,通过 ssh cnbssh1 或 ssh cnbssh2 直接连接特定工作空间。
别名与 slug 的对应关系存储在 ~/.ssh/conf/cnbssh_mapping.json:
[
{
"alias": "cnbssh1",
"slug": "devopsapi/myproject",
"sn": "1"
},
{
"alias": "cnbssh2",
"slug": "myorg/another-project",
"sn": "2"
}
]
cnbssh/
├── cmd/
│ └── cnbssh/
│ └── main.go # 程序入口
├── internal/
│ ├── cnbapi/
│ │ └── workspace.go # CNB API 交互
│ └── sshconfig/
│ ├── config.go # SSH 配置读写
│ └── include.go # Include 指令管理
├── .cnb.yml # CI/CD 配置
├── Makefile # 构建脚本
└── go.mod # Go 模块定义
# 编译
make build
# 交叉编译所有平台
make build-all
# 清理构建产物
make clean
# 本地快照构建
make snapshot
# 查看所有可用命令
make help
MIT