关于 SSH Fleet
SSH Fleet 是供 Agent 使用的 MCP 服务,可诊断或执行 Kubernetes 外部 SSH 主机群中的命令,并通过允许列表限制主机范围。它将精选只读检查与单主机任意命令分开处理。
主要功能
- 01按标签检查多台主机
- 02在单台主机执行命令
- 03默认拒绝的主机允许列表
- 04SSH 密钥不进入模型上下文
- 05输出上限与单主机超时
适用场景
- 01检查运行时间、磁盘、内存、故障或日志
- 02在允许列表中的主机运行命令
MCP 相关
通过 Streamable HTTP、SSE 或 stdio 向 MCP 客户端提供 `ssh_probe` 和 `ssh_exec` 工具。任意命令的访问审批由 MCP 客户端负责。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm -e SSH_FLEET_TRANSPORT -e SSH_FLEET_CMD_TIMEOUT_SECONDS -e SSH_FLEET_OUTPUT_CAP_BYTES -e SSH_FLEET_PROBE_CONCURRENCY -e SSH_FLEET_PROBE_MAX_HOSTS -e SSH_FLEET_AUTH_TOKEN ghcr.io/inhuman/mcp-ssh-fleet:0.1.5SSH_FLEET_TRANSPORTMCP transport. Must be 'stdio' for direct docker/stdio use.SSH_FLEET_CMD_TIMEOUT_SECONDSPer-host command timeout in seconds (1..600).SSH_FLEET_OUTPUT_CAP_BYTESCap on output bytes per host section (>=256).SSH_FLEET_PROBE_CONCURRENCYParallelism for ssh_probe.SSH_FLEET_PROBE_MAX_HOSTSSafety cap on the number of hosts in one probe.SSH_FLEET_AUTH_TOKEN密钥Optional X-MCP-AUTH bearer token (only used by the http/sse transports).本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/inhuman/mcp-ssh-fleet:0.1.5stdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
mcp-ssh-fleet
English | Русский
MCP 服务通过 SSH 为 Agent 提供两种工具,用于访问 Kubernetes 之外的一组主机。SSH 密钥作为挂载的机密数据(不会进入模型上下文);清单是默认拒绝的允许列表。
工具
ssh_probe(tags, check)— 对携带指定标签的每台主机执行精选的只读诊断(AND 语义,与 GitLab runner 标签类似)。check是内置检查项之一:uptime、disk、mem、failed、logs。不能传入任意命令。类别:read-only。ssh_exec(host, command)— 在一台清单中的主机上执行一条任意的非交互式命令(按名称或地址指定;拒绝清单之外的主机)。类别:write-external:服务执行命令,而访问控制(审批/RBAC)由 MCP 客户端负责。
两者均支持:输出大小上限、每台主机的超时设置、TOFU 主机密钥检查(指纹记录在日志中),输出按主机分为独立区段。
配置(环境变量)
| 变量 | 默认值 | 含义 |
|---|---|---|
SSH_FLEET_TRANSPORT | http | http(StreamableHTTP,端点 /mcp)| sse | stdio |
SSH_FLEET_ADDR | :8080 | http/sse 的监听地址 |
SSH_FLEET_AUTH_TOKEN | — | 可选的 X-MCP-AUTH 令牌 |
SSH_FLEET_INVENTORY_PATH | /etc/ssh-fleet/inventory.yaml | 清单的路径(configmap) |
SSH_FLEET_KEY_PATH | /etc/ssh-fleet/id_ed25519 | 私钥的路径(secret) |
SSH_FLEET_OUTPUT_CAP_BYTES | 8192 | 每个区段的输出上限 |
SSH_FLEET_CMD_TIMEOUT_SECONDS | 20 | 每台主机的超时时间 |
SSH_FLEET_PROBE_CONCURRENCY | 8 | 探测并行度 |
SSH_FLEET_PROBE_MAX_HOSTS | 50 | 每次探测的主机数量安全上限 |
清单格式请参见 deploy/inventory.example.yaml。
快速开始(docker,stdio)
docker run -i --rm \
-v /path/to/inventory.yaml:/etc/ssh-fleet/inventory.yaml:ro \
-v /path/to/id_ed25519:/etc/ssh-fleet/id_ed25519:ro \
-e SSH_FLEET_TRANSPORT=stdio \
ghcr.io/inhuman/mcp-ssh-fleet:latest
这是 MCP 客户端从 MCP Registry(io.github.inhuman/mcp-ssh-fleet)安装时使用的配置格式。
连接 MCP 客户端(http/sse)
默认情况下,服务使用 StreamableHTTP;将其注册为常规 HTTP MCP 服务,端点为 /mcp(URL 类似 http://<host>:8080/mcp)。客户端即可使用这两种工具。
客户端安全建议:
ssh_probe为read-only(仅执行精选检查),可广泛授权。ssh_exec可执行任意命令(write-external)。请在客户端侧控制其访问(审批 / RBAC / 用户允许列表)——服务只会在清单中的主机上执行命令,不负责制定访问策略。
开发
make test # unit tests + e2e against a real in-process SSH server
make vet
make vulncheck
make build
make docker
发布:标记 vX.Y.Z → GitHub Actions 构建多架构镜像并将其发布到
ghcr.io/inhuman/mcp-ssh-fleet。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。