
JumpServer Bastion (jms)
io.github.MiFaZhanv0.1.1更新于 Oct 8, 2026
Run commands, transfer files and browse assets on a JumpServer v4 bastion from your AI assistant.
概览
让 AI 助手列出、执行命令并传输文件到 JumpServer v4 堡垒机后面的资产。
- 功能
- 这是 jms-client 命令行工具附带的本地 stdio MCP 服务器,通过 JumpServer v4 的 REST API 与 KoKo 终端网关访问堡垒机。它提供列出与解析资产、执行命令、通过 SFTP 上传、下载与中转文件、列出已配置服务器等工具;设置 JMS_MCP_DEBUG 时会额外注册连接池状态的调试工具。登录态与终端连接按服务器、资产、账号、协议复用,操作会写入本地 JSONL 审计流。
- 适用场景
- 适合助手需要操作只能经 JumpServer 堡垒机访问的主机时使用,例如日常运维中的诊断或文件搬运。它面向日常运维与 AI 辅助运维场景,而不是通用 shell 访问。
- 运行要求
- 以本地进程方式在用户机器上运行;清单未声明环境变量或请求头。需要预编译二进制或 Go 工具链(Go 1.25+),以及可访问的 JumpServer v4(含 KoKo)部署。需先配置服务器地址、用户名与凭据;密码与 TOTP secret 存入操作系统凭据库,无界面环境可用 JMS_PASSWORD_<别名> 与 JMS_OTP_<别名> 回退。SFTP 依赖部署开放 KoKo SSH 端口。
安装
在 SourceWeft 中
- 打开 控制台中的 JumpServer Bastion (jms),将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
jms-client
JumpServer v4 堡垒机的命令行客户端与 MCP 服务器。 单二进制,用 Go 编写,面向日常运维与 AI 辅助运维场景。
通过 JumpServer 的 REST API 与 KoKo 终端网关访问资产:列出资产、执行命令、交互式 shell、SFTP 传输;同时提供 stdio MCP 服务器,让 Claude Code、Codex、pi 等 AI 客户端直接操作堡垒机资产。
特性
- 单二进制 — 静态编译,Linux / macOS / Windows 交叉编译
- 双地址故障转移 — 内网/外网双地址自动探测选择,last-good 记忆加速冷启动
- 连接池 — MCP 场景下登录态与终端连接按
服务器/资产/账号/协议复用,空闲回收、损坏重建 - 凭据不落盘 — 密码与 TOTP secret 存 OS 凭据库(Windows Credential Manager / macOS Keychain / Linux Secret Service),配置文件只有元数据,可备份可同步
- MCP 服务器 — 8 个工具,供 AI 客户端列资产、执行命令、传输文件
- 本地审计流 — 结构化 JSONL 落盘,
jms tail实时观察,jms attach人工接入同一连接池
安装
预编译二进制(推荐,无需 Go 工具链):从 Releases 下载对应平台,解压后把 jms(Windows 为 jms.exe)放进 PATH:
每个压缩包同时带 checksums.txt 可供校验。
用 Go 安装(需 Go 1.25+):
从源码构建:
MCP 客户端(Claude Desktop 等)
下载 Releases 里的 jms-client.mcpb 双击安装。这一个文件已包含全部 6 个平台(macOS/Linux/Windows × x86_64/arm64)的预编译二进制,启动时由内置 launcher 自动选择当前平台,无需按平台挑文件。
也可以手动配置,让 MCP 客户端直接调用已安装的 jms:
快速开始
配置
配置文件位于 %APPDATA%\jms\config.toml(Windows)或 ~/.config/jms/config.toml(Unix),可用 JMS_CONFIG 环境变量或 --config 覆盖。
代理
默认直连,且不读取 HTTP_PROXY / HTTPS_PROXY / NO_PROXY。 堡垒机客户端走本机透明代理几乎总是错的:开发机上这些变量是全局导出的,而代理自身的 DIRECT 规则又往往命中堡垒机地址,于是请求经由一个没人要求的代理离开进程,代理自己的错误(典型是空 body 的 502)冒充了真实网络结果。
需要跨代理访问时显式配置(http / https / socks5):
配置优先于环境:配了代理就连 NO_PROXY 也不看。内网地址与 proxy = "direct" 都不需要额外设置。
凭据
Headless 环境可用环境变量 JMS_PASSWORD_<别名> / JMS_OTP_<别名>(大写,-→_)回退。两处都没有时明确报错,绝不静默降级为明文落盘。
命令
<target> 语法为 asset@server,省略 @server 时使用默认服务器。
MCP
jms mcp 暴露 7 个工具:jms_ls、jms_resolve_asset、jms_exec、jms_sftp_upload、jms_sftp_download、jms_sftp_relay、jms_config_list。设 JMS_MCP_DEBUG=1 时额外注册第 8 个调试工具 jms_pool_status。
客户端配置片段:
后端与兼容性
JumpServer 的 KoKo 组件提供两种终端通道:
所有命令默认走 WebSocket;SSH 后端用 --backend ssh 显式开启。SFTP 由 KoKo SSH 通道承载,依赖部署开放 2222。
要求:JumpServer v4(含 KoKo)。诊断:jms login --timing <资产> 输出分阶段耗时,JMS_WS_DUMP=1 打印 WebSocket 原始帧。
开发
架构与协议细节见 DESIGN.md。集成测试由 JMS_TEST_SERVER 门控,未设置时自动 skip。
许可
MIT © MiFaZhan。设计与 KoKo 协议结论参考了 GCS-ZHN/jms-cli。
来源:README.md,提交 1db25bd
工具
0版本历史
1- v0.1.1最新Oct 8, 2026


