使用说明
项目简介
mcp-server-ssh 是一个专为 Model Context Protocol (MCP) 设计的 SSH 服务器,它充当 LLM 客户端与远程服务器之间的桥梁。通过 mcp-server-ssh,LLM 客户端可以安全地连接到远程服务器,执行命令,上传和下载文件,从而实现与外部系统的交互和数据访问。
主要功能点
- 安全 SSH 连接管理:支持安全的 SSH 连接,保障数据传输的机密性和完整性。
- 多种身份验证方式:支持密码和密钥两种 SSH 身份验证方式,灵活适应不同的安全需求。
- 远程命令执行:允许 LLM 客户端在远程服务器上执行 shell 命令,获取执行结果。
- 文件操作:支持文件的上传、下载和目录操作,方便 LLM 客户端管理远程文件系统。
- 详细日志记录:提供详细的服务器日志,方便问题排查和审计。
安装步骤
- 安装 Node.js 和 npm:确保你的环境中已安装 Node.js 和 npm (Node 包管理器)。
- 安装 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 功能,实现更强大的外部系统交互能力。
信息
分类
开发者工具