使用说明

项目简介

mcp-server-ssh 是一个专为 Model Context Protocol (MCP) 设计的 SSH 服务器,它充当 LLM 客户端与远程服务器之间的桥梁。通过 mcp-server-ssh,LLM 客户端可以安全地连接到远程服务器,执行命令,上传和下载文件,从而实现与外部系统的交互和数据访问。

主要功能点

  • 安全 SSH 连接管理:支持安全的 SSH 连接,保障数据传输的机密性和完整性。
  • 多种身份验证方式:支持密码和密钥两种 SSH 身份验证方式,灵活适应不同的安全需求。
  • 远程命令执行:允许 LLM 客户端在远程服务器上执行 shell 命令,获取执行结果。
  • 文件操作:支持文件的上传、下载和目录操作,方便 LLM 客户端管理远程文件系统。
  • 详细日志记录:提供详细的服务器日志,方便问题排查和审计。

安装步骤

  1. 安装 Node.js 和 npm:确保你的环境中已安装 Node.js 和 npm (Node 包管理器)。
  2. 安装 mcp-ssh 包:打开终端或命令提示符,运行以下命令安装 'mcp-ssh' 包:
    npm install mcp-ssh

服务器配置

要将 mcp-server-ssh 集成到 MCP 客户端(例如 Claude 桌面应用),你需要配置客户端的 'claude_desktop_config.json' 文件。在 'mcpServers' 字段下添加 'ssh' 服务器配置:

{
  "mcpServers": {
    "ssh": {
      "command": "node",
      "args": ["%APPDATA%/npm/node_modules/mcp-ssh/dist/server.js"],
      "env": {
        "SSH_PORT": "8889",
        "SSH_LOG_LEVEL": "info"
      }
    }
  }
}

配置参数说明

  • '"ssh"': 服务器名称,客户端使用此名称来引用该服务器。
  • '"command"': 启动服务器的命令,这里使用 'node' 运行 JavaScript 文件。
  • '"args"': 传递给 'node' 命令的参数,指定服务器入口文件路径。'%APPDATA%/npm/node_modules/mcp-ssh/dist/server.js' 表示全局安装的 'mcp-ssh' 包中编译后的服务器主文件路径。
  • '"env"': 设置服务器运行时的环境变量。
    • '"SSH_PORT"': SSH 服务器监听的端口号,默认为 '8889'。
    • '"SSH_LOG_LEVEL"': 日志级别,例如 'info'、'error' 等,控制日志输出详细程度。

基本使用方法

配置完成后,MCP 客户端可以通过 JSON-RPC 协议与 mcp-server-ssh 服务器进行通信,发送请求以执行 SSH 操作。

连接 SSH 服务器

客户端发送 POST 请求到 '/connect' 接口,请求体为 JSON 格式,包含连接参数:

  • 'id': 连接 ID,客户端自定义,用于后续操作中标识该连接。
  • 'host': SSH 服务器主机名或 IP 地址。
  • 'port': SSH 服务器端口号,默认为 '22'。
  • 'username': SSH 登录用户名。
  • 'password': SSH 登录密码(密码验证方式)。
  • 'privateKey': SSH 私钥内容(密钥验证方式),如果使用密钥验证。
  • 'passphrase': 私钥密码,如果私钥已加密。

示例 (密码验证):

POST /connect
Content-Type: application/json

{
  "id": "my-ssh-connection",
  "host": "example.com",
  "port": 22,
  "username": "user",
  "password": "password123"
}

执行远程命令

客户端发送 POST 请求到 '/exec' 接口,请求体为 JSON 格式,包含:

  • 'id': 连接 ID,与连接时使用的 ID 一致。
  • 'command': 要执行的 shell 命令。

示例:

POST /exec
Content-Type: application/json

{
  "id": "my-ssh-connection",
  "command": "ls -l /home/user"
}

文件上传

客户端发送 POST 请求到 '/upload/{id}' 接口,'{id}' 替换为连接 ID。使用 'multipart/form-data' 格式上传文件,包含:

  • 'file': 要上传的文件内容。
  • 'remotePath': 远程服务器上的目标文件路径。

文件下载

客户端发送 GET 请求到 '/download/{id}' 接口,'{id}' 替换为连接 ID,并附加查询参数 'remotePath' 指定要下载的远程文件路径。

示例:

GET /download/my-ssh-connection?remotePath=/path/to/remote/file.txt

更多操作

mcp-server-ssh 还支持目录列表 ('/ls/{id}')、连接状态查询 ('/status/{id}') 和断开连接 ('/disconnect/{id}') 等操作,具体接口和参数请参考仓库 README 文档。

通过 mcp-server-ssh,LLM 客户端可以方便地集成 SSH 功能,实现更强大的外部系统交互能力。

信息

分类

开发者工具