classfang/ssh-mcp-server

基于 SSH 的 MCP 服务 🧙‍♀️。已被MCP官方收录 🎉。 SSH MCP Server 🧙‍♀️. It has been included in the community MCP repository 🎉.

ssh‑mcp‑server

它是什么

ssh‑mcp‑server 是一个 Node‑JS 工具,作为 AI 助手(或任何使用 Model Context Protocol (MCP) 的客户端)与远程 SSH 服务器之间的桥接器。它在本地运行,将 SSH 凭证保留在主机上,并公开一组兼容于 MCP 的工具(如 execute‑command、upload、download、read‑file、write‑file、job‑control 等),让 AI 能够要求服务器执行命令或移动文件,而无需接触私钥或密码。

为何它对 AI/ML 工作流程很重要

  • 安全的远程执行 – LLM 驱动的代理程序通常需要执行实际操作(例如:配置 VM、提取日志、部署代码)。通过 MCP 路由这些操作,模型永远不会获取原始 SSH 凭证,从而减少攻击面。
  • 标准化接口 – MCP 是多种 AI 编程助手(如 Claude Code、Cursor 等)使用的协议。此服务器实现了该规范,让任何支持 MCP 的助手能将远程主机视为一级工具。
  • 细致的安全控制 – 内置命令白名单/黑名单、输出大小限制及路径限制,让操作员能将 AI 限制在安全的操作范围内(如只读诊断、日志收集等)。
  • 支持复杂环境 – 支持密码、密钥及 2FA 验证;可通过跳板机、SOCKS/HTTP 代理服务器进行跳转,甚至通过模板在容器内执行命令。

核心功能(如 README 所述)

功能 说明
多种验证方式 密码、私钥(可选密码短语)、SSH‑agent 及键盘交互式 2FA。
命令白名单 / 黑名单 基于 Regex 的允许/拒绝列表;白名单优先,防止危险的管道或重定向。
传输模式 exec(默认,支持 SFTP)与 shell(持久化 shell,适用于跳板机,但不支持文件传输)。
文件传输 通过 SFTP 进行 upload / download,支持递归目录及可配置的允许路径列表。
任务管理 job‑start、job‑status、job‑kill、job‑list,用于在服务器重启后仍能存续的长时间后台任务。
命令模板 将每个命令包装在用户提供的模板中(例如 sudo bash -c <quotedCommand> 或 docker exec …)。
多主机配置 单一 JSON 配置文件、--ssh JSON 字符串、旧版逗号分隔语法,或从 ~/.ssh/config 读取的逗号分隔 --host 值。
代理支持 通过 --proxy(或旧版 --socksProxy)支持 SOCKS5、HTTP、HTTPS 代理。
输出与资源限制 最大 stdout/stderr 大小(默认 10 MiB)、单条命令超时、保持连接设置及可选的 PTY 配置。
零安装执行 使用 npx @fangjunjie/ssh-mcp-server … 运行 – 无需全局安装。

谁会使用它

  • AI 编程助手,需要在用户的基础设施上执行实际命令(如 Claude Code、Cursor、GitHub Copilot Chat)。
  • DevOps 团队,构建 LLM 驱动的机器人以进行自动化诊断、日志收集或部署。
  • 重视安全的用户,希望仅向 AI 模型公开一组有限的 SSH 操作。
  • 研究人员,实验与云端或本地服务器交互的自主代理程序。

入门(来自 README 的快速步骤)

  1. 安装 / 运行 – npx -y @fangjunjie/ssh-mcp-server …(-y 标志可跳过 npm 安装提示)。
  2. 创建 MCP 配置 – 将示例 JSON 片段(例如简单的密码验证)复制到 MCP 客户端的 mcp.json 中。
  3. 选择性加入白名单 – 将命令限制为安全命令,如 ls、cat、df。
  4. 调用工具 – 从 AI 助手发送请求,例如:
    { "tool": "execute-command", "params": { "cmdString": "ls -al", "connectionName": "dev" } }
    
  5. 查看响应 – 服务器会返回命令输出、退出代码及任何错误元数据。

限制 / 待改进点(根据 README)

  • 无内置速率限制 – 您需要外部防火墙或反向代理来防止 DoS 攻击。
  • shell 模式会禁用文件传输,因为持久化 shell 不支持 SFTP。
  • 输出大小限制为每个连接硬编码;将 maxOutputBytes 设为 0 可禁用防护,但不建议这样做。
  • 服务器假设远程主机为 POSIX sh 环境以执行后台任务。

以上所有信息均直接取自项目的 README;未推论出任何额外功能。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目