logo
0
0
WeChat Login

cnbssh

自动配置 CNB 工作空间的 SSH 连接

简介

cnbssh 是一个轻量级命令行工具,用于自动获取 CNB 平台当前运行中的工作空间信息,并在本地生成 SSH 配置,实现通过 ssh cnbssh 快速连接到 CNB 云端工作空间。

功能特性

  • 🔍 自动发现当前运行中的 CNB 工作空间
  • 🔑 自动生成 SSH 配置文件(~/.ssh/conf/cnb.conf
  • 📂 自动在 ~/.ssh/config 中添加 Include conf/*.conf 指令(幂等,不会重复添加)
  • 🖥️ 支持多平台:Linux、macOS、Windows
  • 🔀 支持多个运行中的工作空间,自动生成 cnbssh1cnbssh2 等别名配置
  • 🗂️ 通过映射文件(~/.ssh/conf/cnbssh_mapping.json)记录别名与 slug 的对应关系
  • 📋 多工作空间时提供交互式选择菜单

工作原理

  1. 通过 CNB API 获取当前运行中的工作空间列表
  2. 从工作空间的 SSH 连接串中提取用户名和主机名
  3. 确保 ~/.ssh/config 包含 Include conf/*.conf,并创建 ~/.ssh/conf 目录
  4. 将 SSH 配置写入 ~/.ssh/conf/cnb.conf
  5. 将别名与 slug 的映射关系保存到 ~/.ssh/conf/cnbssh_mapping.json
  6. 单工作空间时自动连接;多工作空间时提供交互式选择菜单

快速开始

环境要求

  • Go 1.21+

安装

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 cnbssh1ssh 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

License

MIT

About

No description, topics, or website provided.
Language
Go86.1%
Makefile13.9%