AI辅助基础设施管理的缺失要素

发布: (2025年12月31日 GMT+8 19:52)
12 min read
原文: Dev.to

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 可以:

  1. SSH 进入反向代理,检查配置。
  2. 跳转到应用服务器,验证部署。
  3. 查询数据库,确认迁移已执行。
  4. 汇报结果——整个过程我只需用普通英文描述我的目标。

当前的 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-serverdatabaseredis-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 连接的建立相对昂贵。你不想为每个命令都打开一个新连接。

桥接器维护一个 会话池

  • 一旦与主机的连接建立后,它会保持打开并被复用。
  • 会话会在可配置的空闲超时后自动关闭。
  • 可以通过桥接器的配置文件调节池的大小和超时时间。

入门

  1. 克隆仓库

    git clone https://github.com/yourname/ssh-mcp-bridge.git
    cd ssh-mcp-bridge
  2. 配置你的服务器 (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"
  3. 以 STDIO 模式运行(本地)

    ./ssh-mcp-bridge --mode stdio
  4. 以 HTTP 模式运行(远程)

    ./ssh-mcp-bridge --mode http --listen 0.0.0.0:8080 --auth api-key
  5. 连接你的 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 凭证;客户端永远看不到这些凭证。

命令级控制

  1. 操作系统层面的限制 – 您配置的 SSH 用户名决定了远程操作系统允许的操作(例如,非 root 用户无法运行特权命令)。
  2. 桥接器层面的允许/拒绝列表
    • 拒绝列表 – 阻止诸如 rm -rfsudo 等模式。
    • 允许列表 – 将执行限制在特定的白名单命令中。
    • 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 与基础设施的疑问、反馈或战斗经验? 我很乐意倾听。

Back to Blog

相关文章

阅读更多 »