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 的快速步骤)
- 安装 / 运行 –
npx -y @fangjunjie/ssh-mcp-server …(-y标志可跳过 npm 安装提示)。 - 创建 MCP 配置 – 将示例 JSON 片段(例如简单的密码验证)复制到 MCP 客户端的
mcp.json中。 - 选择性加入白名单 – 将命令限制为安全命令,如
ls、cat、df。 - 调用工具 – 从 AI 助手发送请求,例如:
{ "tool": "execute-command", "params": { "cmdString": "ls -al", "connectionName": "dev" } } - 查看响应 – 服务器会返回命令输出、退出代码及任何错误元数据。
限制 / 待改进点(根据 README)
- 无内置速率限制 – 您需要外部防火墙或反向代理来防止 DoS 攻击。
shell模式会禁用文件传输,因为持久化 shell 不支持 SFTP。- 输出大小限制为每个连接硬编码;将
maxOutputBytes设为 0 可禁用防护,但不建议这样做。 - 服务器假设远程主机为 POSIX
sh环境以执行后台任务。
以上所有信息均直接取自项目的 README;未推论出任何额外功能。
相关
- 项目
- 项目
- 项目
- 项目
- 项目