SSH远程命令执行服务器

一个通过SSH在远程主机上执行命令的服务器,支持持久连接和多种认证方式。

  • by koorchik
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 koorchik/ssh-mcp-server

使用说明

SSH MCP服务器

SSH MCP(模型上下文协议)服务器,允许通过SSH在远程主机上执行命令。服务器一次保持与一台主机的持久SSH连接,允许在不重新连接的情况下高效执行多个命令。

特性

  • 持久SSH连接:一次维护一个SSH连接,以便高效执行命令
  • 双重身份验证:支持密码和私钥身份验证方法
  • 命令执行:使用可选的工作目录和超时控制执行命令
  • 结构化输出:返回详细的JSON响应,包括退出代码、stdout、stderr和时间戳
  • 错误处理:使用适当的MCP错误代码进行全面的错误处理
  • 连接管理:用于连接、断开连接和检查连接状态的工具

安装

  1. 克隆存储库
  2. 安装依赖项:
    npm install
    

发展

构建并运行

# Build the TypeScript code
npm run build

# Run the built server
npm start

# Build and run in one step (development)
npm run dev

测试

# Run all tests
npm test

# Run tests in watch mode (for development)
npm run test:watch

# Run tests with coverage report
npm run test:coverage

用法

SSH MCP服务器提供四种主要工具来管理SSH连接和执行命令:

1.连接到SSH服务器

{
  "name": "ssh_connect",
  "arguments": {
    "host": "example.com",
    "username": "user",
    "port": 22,
    "password": "your-password"
  }
}

或者使用私钥身份验证:

{
  "name": "ssh_connect",
  "arguments": {
    "host": "example.com",
    "username": "user",
    "port": 22,
    "privateKey": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----",
    "passphrase": "optional-passphrase"
  }
}

2.执行命令

{
  "name": "ssh_exec",
  "arguments": {
    "command": "ls -la",
    "timeout": 30000,
    "workingDirectory": "/home/user"
  }
}

3.检查连接状态

{
  "name": "ssh_status",
  "arguments": {}
}

4.断开连接

{
  "name": "ssh_disconnect",
  "arguments": {}
}

刀具参数

ssh-connect

必修的:

  • host:SSH主机名或IP地址
  • username:SSH用户名

可选:

  • port:SSH端口(默认值:22)
  • password:身份验证密码
  • privateKey:用于基于密钥的身份验证的私钥内容
  • passphrase:加密私钥的密码

注: 必须提供 password 或 privateKey 用于身份验证。

ssh_exec

必修的:

  • command:要执行的命令

可选:

  • timeout:命令超时(毫秒)(默认值:30000)
  • workingDirectory:命令执行的工作目录

ssh状态

无需参数。

ssh断开连接

无需参数。

工作流程

  1. 连接:使用 ssh_connect 建立与SSH服务器的连接
  2. 执行:使用 ssh_exec 在连接的服务器上多次运行命令
  3. 开关:使用 ssh_disconnect 然后 ssh_connect 切换到其他服务器
  4. 状态:使用 ssh_status 检查当前连接详细信息

响应格式

命令执行返回结构化JSON,其中包含:

  • exitCode:命令退出代码
  • stdout:标准输出
  • stderr:标准误差输出
  • timestamp:执行时间戳
  • success:布尔值,指示命令是否成功

错误处理

服务器通过正确的MCP错误代码提供全面的错误处理,用于:

  • 连接失败
  • 身份验证错误
  • 命令执行超时
  • 网络问题
  • 无效参数

文件结构

  • src/index.ts:启动MCP服务器的入口点
  • src/ssh-mcp-server.ts:主SSH MCP服务器实现
  • tests/:服务器功能的Jest单元测试
  • build/:TypeScript编译输出
  • package.json:将CLI二进制文件定义为 ssh-mcp-server

许可证

该项目根据MIT许可证获得许可。