远程命令执行服务

SSH MCP Server 是一个通过AI代理安全且可控地在Linux服务器上执行命令的中间件层。

  • by volkan-m
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 volkan-m/ssh-mcp-server

使用说明

SSH MCP服务器-安全远程命令执行

此项目是一个MCP(模型上下文协议)服务器,允许您 安全地 和 可控地 通过AI代理(Cursor、Antigravity、Claude Desktop等)在Linux服务器上运行命令。

🎯 主要特点

  • 🛡️ 注重安全:只能执行您明确允许的命令(Allowlist)。
  • 🔑 安全访问:使用基于SSH密钥的身份验证;无需密码。
  • ⏱️ 超时保护:自动终止长时间运行的命令。
  • 📊 详细输出:以干净的格式向代理程序显示命令结果(stdout、stderr、exit代码)。
  • 🛠️ 集成工具:包括用于连接测试、配置查看和列出允许命令的工具。

🏗️ 建筑

graph LR
    A[AI Agent<br/>Cursor/Antigravity] -- MCP --> B[SSH MCP Server<br/>Local/VM]
    B -- SSH --> C[Target Linux Server]

为什么选择这个中间件层?

  1. 您将AI代理限制为特定操作,而不是直接访问终端。
  2. 基于正则表达式的allowlist可防止命令注入和未经授权的文件访问。
  3. 正在连接的用户(ai-runner)可以在目标服务器上以最小权限进行隔离。

🚀 快速开始

1.先决条件

  • Python 3.10+
  • 目标服务器上的受限SSH用户(例如。, ai-runner)
  • SSH密钥(位于 ~/.ssh/ 在您的本地计算机上)

2.安装

git clone https://github.com/volkan-m/ssh-mcp-server.git
cd ssh-mcp-server
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install -r requirements.txt

3.配置

设置以下环境变量:

变量 描述 默认值
SSH_HOST 服务器IP或主机名 必需
SSH_USER SSH用户名 ai-runner
SSH_KEY 私钥路径 ~/.ssh/ai_runner
SSH_PORT SSH端口 22
COMMAND_TIMEOUT 最大命令持续时间(秒) 30

4.跑步

python ssh_mcp_server.py

📖 详细文件

检查 docs/ 更多详细指南的文件夹:

🛡️ 安全和允许名单

允许的命令在中定义为正则表达式模式 ALLOWED_COMMANDS 列表内 ssh_mcp_server.py.

例子:

ALLOWED_COMMANDS = [
    r"^systemctl status [a-zA-Z0-9.-]+$",  # Only status checks
    r"^df -h$",                            # Disk usage
]

🎮 工具

  • ssh_exec(command):执行指定的命令。
  • ssh_test_connection():验证服务器连接。
  • ssh_list_allowed():列出允许的命令模式。
  • ssh_get_config():显示当前运行时配置。

🤝 贡献

  1. 分叉项目。
  2. 创建要素分支(git checkout -b feature/NewFeature).
  3. 提交您的更改(git commit -am 'Add new feature').
  4. 推到分支(git push origin feature/NewFeature).
  5. 打开拉取请求。

📄 许可证

该项目根据 MIT许可证。请参阅 许可证 文件以获取详细信息。


开发人: 沃尔坎-m 版本: 1.1.0