使用说明
MCP SSH执行器
一种模型上下文协议(MCP)服务器,支持通过SSH连接执行远程命令。此服务器维护持久的SSH隧道,并提供在远程计算机上执行shell命令的工具。
特性
- 持久SSH连接:跨多个命令执行保持打开的SSH连接
- Docker容器化:在最小的Docker容器中运行,便于部署
- 壳牌运营商支持:完全支持管道(
|),逻辑与(&&),逻辑OR(||),和其他shell操作符 - 身份验证方法:支持SSH密钥和密码身份验证
- MCP协议:实施官方MCP stdio协议,实现无缝集成
建筑
服务器由以下部分组成:
- 基于Go的MCP服务器:使用JSON-RPC 2.0在stdio上实现MCP协议
- SSH连接管理器:处理SSH连接生命周期和命令执行
- Docker容器:提供带有SSH密钥挂载的隔离执行环境
安装
先决条件
- 码头工人
- SSH访问目标计算机
- SSH私钥(推荐)或密码
构建并运行
-
克隆存储库:
git clone https://github.com/kvirund/mcp-ssh-executor.git cd mcp-ssh-executor -
构建Docker镜像:
docker build -t mcp-ssh-executor . -
配置MCP设置: 添加到您的MCP配置中(例如。,
cline_mcp_settings.json):{ "mcpServers": { "ssh-executor": { "command": "docker", "args": ["run", "-i", "--rm", "-v", "C:\\Users\\username\\.ssh:/root/.ssh", "mcp-ssh-executor"], "env": { "SSH_HOST": "your-server-ip", "SSH_USER": "your-username", "SSH_PRIVATE_KEY_PATH": "/root/.ssh/id_rsa", "SSH_PORT": "22" }, "disabled": false, "autoApprove": [] } } }
用法
可用工具
-
connect_ssh
- 建立与已配置服务器的SSH连接
- 无需参数
- 返回成功/错误状态
-
execute_命令
- 在远程服务器上执行shell命令
- 参数:
command(string)-要执行的命令 - 返回命令输出和退出状态
-
disconnect_ssh
- 关闭SSH连接
- 无需参数
- 返回确认
示例使用流程
- 连接:呼叫
connect_ssh建立连接 - 执行命令:
ls -la-列出目录内容ps aux | grep nginx-查找nginx进程cd /var/log && tail -f syslog-监控系统日志mkdir backup && cp *.log backup/ && tar czf backup.tar.gz backup-创建备份
- 断开:呼叫
disconnect_ssh完成后
壳牌运营商
所有标准外壳操作员的工作:
- 管道:
command1 | command2 - 逻辑与:
command1 && command2 - 逻辑或:
command1 || command2 - 重定向:
command > file.txt - 背景:
command &
配置
环境变量
| 变量 | 描述 | 必填 |
|---|---|---|
SSH_HOST |
目标服务器主机名/IP | 是 |
SSH_USER |
SSH用户名 | 是 |
SSH_PRIVATE_KEY_PATH |
SSH私钥路径 | 是(如果不使用密码) |
SSH_PASSWORD |
SSH密码 | 是(如果不使用密钥) |
SSH_PORT |
SSH端口(默认:22) | 否 |
SSH密钥设置
对于基于密钥的身份验证:
- 如果需要,生成SSH密钥对:
ssh-keygen - 将公钥复制到服务器:
ssh-copy-id user@host - 安装
.sshDocker中的目录:-v /path/to/.ssh:/root/.ssh
发展
地方发展
-
安装Go 1.23+
-
克隆和构建:
git clone https://github.com/kvirund/mcp-ssh-executor.git cd mcp-ssh-executor go mod tidy go build -o ssh-executor . -
本地测试:
export SSH_HOST=your-host export SSH_USER=your-user export SSH_PRIVATE_KEY_PATH=/path/to/key ./ssh-executor
测试MCP协议
向stdin发送JSON-RPC消息:
# Initialize
echo '{"jsonrpc": "2.0", "id": 1, "method": "initialize"}' | ./ssh-executor
# List tools
echo '{"jsonrpc": "2.0", "id": 2, "method": "tools/list"}' | ./ssh-executor
安全考虑
- SSH密钥比密码更安全
- 使用SSH端口转发以提高安全性
- 限制目标服务器上的SSH用户权限
- 定期轮换SSH密钥
- 使用
ssh-keygen -t ed25519适用于现代密钥类型
故障排除
连接问题
- 验证SSH凭据和服务器可访问性
- 检查SSH密钥权限(
chmod 600 ~/.ssh/id_rsa) - 确保SSH服务正在目标服务器上运行
Docker问题
- 验证Docker守护进程是否正在运行
- 检查卷安装路径
- 确保SSH目录具有正确的权限
MCP集成
- 确认MCP设置已正确配置
- 检查Docker镜像是否已构建并可用
- 验证是否设置了环境变量
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
贡献
- 分叉存储库
- 创建要素分支
- 进行更改和测试
- 提交拉取请求
