AI辅助基础设施管理的缺失要素
I’m happy to translate the article for you, but I’ll need the full text you’d like translated. Could you please paste the content (or the portion you want translated) here? Once I have the text, I’ll provide the Simplified‑Chinese version while keeping the source link, formatting, markdown, and any code blocks or URLs unchanged.
实际问题:跨异构基础设施的协同
如果只有一台服务器,基础设施管理就很简单:SSH 登录,执行命令,完成。
真实的基础设施——即使是家庭实验室——也很少只有一台服务器。它是由用途不同、访问方式不同、故障模式不同的多台机器组成的集合。部署一个新服务可能会涉及五台不同的系统。排查问题则需要在多个主机之间关联日志和指标。
这正是 AI 助手能够真正发挥作用的地方。不是在任何单一任务上比我更聪明,而是处理 协同开销。AI 可以:
- SSH 进入反向代理,检查配置。
- 跳转到应用服务器,验证部署。
- 查询数据库,确认迁移已执行。
- 汇报结果——整个过程我只需用普通英文描述我的目标。
当前的 AI‑基础设施集成要么限制过多而无法使用,要么要求你把凭证粘贴到让安全团队不安的地方。我想要的东西不一样:对 Claude 说 “将新版本部署到生产环境”,它就能在我的系统之间实际完成协同 而且从不看到任何 IP 地址、密码或私钥。
这不是偏执,而是良好的架构设计。
Source: …
解决方案:SSH MCP 桥接
MCP(模型上下文协议)是现代 AI 助手(如 Claude、ChatGPT 和 VS Code Copilot)连接外部工具的方式。与其来回复制粘贴命令输出,你可以直接暴露工具让 AI 调用。该生态系统仍然年轻,但正在快速成熟。
SSH MCP 桥接 是一个 MCP 服务器,位于你的 AI 助手和基础设施之间:
AI Assistant (Claude / ChatGPT / VS Code)
│
▼
SSH MCP Bridge
│
▼
Your Servers (web, db, cache, …)
AI 能看到的内容
- 一组 友好的服务器名称(
web-server、database、redis-cache)。 - 每台服务器的功能描述。
- 用于执行命令和管理会话的工具。
AI 永远看不到的内容
- IP 地址。
- SSH 私钥。
- 密码。
- 网络拓扑。
这不仅仅是出于安全考虑(虽然这是主要目的),也让 AI 的工作更轻松。它不需要去推理 192.168.1.47,而是直接思考“生产数据库服务器”——这正是我们对基础设施的思考方式。
两种部署方式
我为两种不同的使用场景设计了它,因为我的需求各不相同。
| 模式 | 典型使用场景 | 工作原理 |
|---|---|---|
| STDIO 模式 | 本地部署(例如,在笔记本电脑上运行 Claude Desktop)。 | 桥接程序作为子进程运行,Claude 直接与其通信。没有网络暴露,也无需处理认证复杂性。 |
| HTTP 模式 | 远程部署(例如,ChatGPT 集成、集中式 MCP 服务器)。 | 将桥接部署在服务器或容器上,通过 HTTP/SSE 进行连接。支持简单的 API‑key 认证以及企业环境下的完整 OAuth 2.0/OIDC。 |
您实际可以做的事情
故障排除
“检查所有服务器的磁盘使用情况和内存,并告诉我是否有任何异常。”
AI 查询每台主机,汇总结果,并给出简明摘要——不再需要打开四个终端标签页。
部署
“在应用服务器上拉取最新代码,对数据库执行迁移,重启应用程序,并验证其响应。”
一句话即可按正确顺序协调多台服务器。
配置更改
“向 nginx 配置中添加一个新的上游服务器并重新加载。”
AI 读取当前配置,进行编辑,验证后应用。
调查
“显示应用日志的最近 50 行,并检查 nginx 访问日志中是否有相关错误。”
跨服务器的日志交叉引用变得像对话一样。
关键洞察: AI 在多个命令和多台服务器之间保持上下文。它记住刚才检查的内容,发现模式,并能够推理系统的整体状态。
会话管理
SSH 连接的建立相对昂贵。你不想为每个命令都打开一个新连接。
桥接器维护一个 会话池:
- 一旦与主机的连接建立后,它会保持打开并被复用。
- 会话会在可配置的空闲超时后自动关闭。
- 可以通过桥接器的配置文件调节池的大小和超时时间。
入门
-
克隆仓库
git clone https://github.com/yourname/ssh-mcp-bridge.git cd ssh-mcp-bridge -
配置你的服务器 (
config.yaml)servers: - name: web-server host: web.example.com user: ubuntu identity_file: ~/.ssh/id_rsa_web description: "Production web application" - name: database host: db.example.com user: postgres identity_file: ~/.ssh/id_rsa_db description: "PostgreSQL primary" -
以 STDIO 模式运行(本地)
./ssh-mcp-bridge --mode stdio -
以 HTTP 模式运行(远程)
./ssh-mcp-bridge --mode http --listen 0.0.0.0:8080 --auth api-key -
连接你的 AI 助手
请参阅
docs/ai-integration.md中针对 Claude、ChatGPT 或 VS Code 的说明。
贡献
- Fork 仓库并提交 PR。
- 遵循
.editorconfig中定义的代码风格。 - 为任何新功能添加单元测试。
License
MIT © 2024 Your Name
SSH MCP Bridge 让您自行保管密钥和 IP,同时仍能获得 AI 驱动编排带来的生产力提升。试一试吧,告诉我您构建了什么!
概述
SSH MCP Bridge 允许 Claude(或任何兼容 MCP 的 AI)通过 MCP 协议在远程 SSH 主机上运行命令。它抽象掉 SSH 的细节,提供一个 AI 可调用的简单 HTTP 或 MCP 端点。
-
模式 –
- Shell mode – 持久化的 shell 通道;工作目录和环境在命令之间保持。
- Exec mode – 无状态、隔离的命令;每个命令在独立的会话中运行。
-
会话处理 – 空闲超时默认 30 分钟。对每个主机的并发会话数设上限,以防资源耗尽。
安全考虑
基础设施访问非常重要,因此桥接器采用 深度防御(defense‑in‑depth)构建。
凭证隔离
- 桥接器存储 SSH 凭证;客户端永远看不到这些凭证。
命令级控制
- 操作系统层面的限制 – 您配置的 SSH 用户名决定了远程操作系统允许的操作(例如,非 root 用户无法运行特权命令)。
- 桥接器层面的允许/拒绝列表 –
- 拒绝列表 – 阻止诸如
rm -rf或sudo等模式。 - 允许列表 – 将执行限制在特定的白名单命令中。
- AI 只能运行您明确允许的命令。
- 拒绝列表 – 阻止诸如
身份验证
- HTTP 模式 支持:
- API 密钥 – 简单的部署方式。
- OAuth 2.0 / OIDC – 企业级(Auth0、Azure AD、Okta、Keycloak 等)。
审计日志
- 每条命令都会记录:时间戳、用户身份(OAuth 模式下的 JWT)、目标主机以及执行结果。
- 实现 “谁在何时做了什么” 的合规性或事件调查。
容器安全
- Docker 镜像以 非 root 用户 运行。
- 将配置文件和 SSH 密钥挂载为 只读 卷。
- 应用资源限制(CPU、内存)。
网络隔离
- 部署在 TLS 终止的反向代理之后。
- 通过防火墙规则或 VPN 限制访问。
请勿 仅使用 API 密钥认证将桥接器直接暴露在公共互联网。
入门
1. 克隆并设置 Python 环境
git clone https://github.com/shashikanth-gs/mcp-ssh-bridge.git
cd ssh-mcp-bridge
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
2. 创建配置文件 (config.yaml)
server:
enable_stdio: true
log_level: "INFO"
hosts:
- name: my-server
description: "Development server"
host: "your-server.com"
username: "your-user"
private_key_path: "~/.ssh/id_rsa"
execution_mode: "shell" # or "exec"
session:
idle_timeout: 30 # minutes
3. 将桥接添加到 Claude Desktop(或任何 MCP 客户端)
{
"mcpServers": {
"ssh-bridge": {
"command": "/path/to/venv/bin/python",
"args": ["-m", "ssh_mcp_bridge", "/path/to/config.yaml"]
}
}
}
重启 Claude Desktop 并让它列出你的 SSH 主机。如果一切正常,服务器将出现在 UI 中。
4. (可选)Docker 部署
仓库中提供了一个 docker-compose.yml 示例,供偏好容器化运行的用户使用。
为什么开源?
- 个人需求 – 我构建它是为了在 AI 辅助下管理自己的基础设施。
- 生态系统缺口 – 大多数 MCP 示例都是简单的文件读取器或网页抓取器;基础设施管理更困难,但能带来更高的杠杆效应。
- 社区反馈 – 我期待贡献和想法。
计划功能(欢迎 PR)
- SCP/SFTP 文件传输
- 跳板机(堡垒主机)支持
- 用于暴露服务器状态的 MCP 资源
总结
AI 辅助的基础设施管理正在到来,无论我们是否准备好。关键是要 安全 且 可审计。
SSH MCP Bridge 是我对这种平衡的尝试。它可能并不适用于所有用例,但如果你需要一种让 AI 在不牺牲安全的前提下帮助管理服务器的方式,可以试一试。
- Repository:
- Docker images: on Docker Hub (see repo README)
关于 AI 与基础设施的疑问、反馈或战斗经验? 我很乐意倾听。