ssh
SSH
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"ssh": {
"args": [
"run",
"--entrypoint",
"ssh-mcp-stdio",
"-i",
"--rm",
"ssh-mcp"
],
"command": "docker"
}
}
}
服务介绍
SSH-MCP 服务器
一个用 Rust 实现的 SSH 客户端服务器,集成了模型上下文协议(MCP),允许大型语言模型(LLMs)连接到 SSH 服务器并使用 SSH 功能。
轻量级且高效:
- 🚀
ssh-mcp:仅 4.3MB 的二进制文件大小,1.8MB 的内存占用 - 🔄
ssh-mcp-stdio:仅 1.5MB 的二进制文件大小,2.3MB 的内存使用 - 🐳
docker:最终镜像大小仅为 27.5MB
特性
- SSH 客户端集成:通过 MCP 命令连接到 SSH 服务器
- SSH 命令执行:在远程 SSH 服务器上运行命令
- 端口转发:设置 SSH 隧道和端口转发(默认通过
port_forward功能启用) - 会话管理:跟踪和管理多个 SSH 会话
- MCP 协议支持:使用 poem-mcpserver 构建以实现 AI/LLM 兼容性
- 有状态连接:在多个命令之间保持 SSH 会话
安装与集成
您有两种安装选项:
选项 1:使用 Docker(推荐)
无需 Rust 工具链 - 只需 Docker!
# 从 Docker Hub 拉取预构建的镜像
docker pull mingyang91/ssh-mcp
# 运行服务器
docker run -p 8000:8000 mingyang91/ssh-mcp
或者自己构建镜像:
# 构建 Docker 镜像
docker build -t ssh-mcp .
# 运行服务器
docker run -p 8000:8000 ssh-mcp
选项 2:通过 Cargo 安装
前提条件:
- Rust 1.70.0 或更高版本
- Cargo 包管理器
cargo install ssh-mcp
与 mcpServers 的集成
要将 SSH-MCP 与 mcpServers 一起使用,请将以下配置添加到您的 mcpServers JSON 配置中:
如果通过 Cargo 安装:
{
"mcpServers": {
"ssh": {
"command": "ssh-mcp-stdio",
"args": []
}
}
}
如果使用 Docker:
{
"mcpServers": {
"ssh": {
"command": "docker",
"args": [
"run",
"--entrypoint",
"ssh-mcp-stdio",
"-i",
"--rm",
"ssh-mcp"
]
}
}
}
这将注册 SSH 处理程序,允许 LLMs 通过您的 MCP 服务器管理 SSH 连接。
使用方法
连接到 SSH 服务器
使用密码认证
{
"command": "ssh_connect",
"params": {
"address": "example.com:22",
"username": "user",
"password": "password"
}
}
使用密钥认证
{
"command": "ssh_connect",
"params": {
"address": "example.com:22",
"username": "user",
"key_path": "/path/to/private_key"
}
}
使用 SSH 代理认证
{
"command": "ssh_connect",
"params": {
"address": "example.com:22",
"username": "user"
}
}
响应:
{
"session_id": "c8a3b2e1-4f5d-6e7c-8a9b-0c1d2e3f4a5b",
"message": "成功连接到 user@example.com:22",
"authenticated": true
}
如果连接失败:
{
"error": "连接失败:连接被拒绝"
}
执行命令
{
"command": "ssh_execute",
"params": {
"session_id": "c8a3b2e1-4f5d-6e7c-8a9b-0c1d2e3f4a5b",
"command": "ls -la"
}
}
响应:
{
"stdout": "total 32
drwxr-xr-x 5 user group 4096 Jan 1 12:00 .
drwxr-xr-x 25 user group 4096 Jan 1 12:00 ..
-rw-r--r-- 1 user group 142 Jan 1 12:00 file.txt
",
"stderr": "",
"exit_code": 0
}
设置端口转发
注意:端口转发默认通过 port_forward 功能标志启用。
{
"command": "ssh_forward",
"params": {
"session_id": "c8a3b2e1-4f5d-6e7c-8a9b-0c1d2e3f4a5b",
"local_port": 8080,
"remote_address": "internal-server",
"remote_port": 80
}
}
响应:
{
"local_address": "127.0.0.1:8080",
"remote_address": "internal-server:80",
"active": true
}
断开会话
{
"command": "ssh_disconnect",
"params": {
"session_id": "c8a3b2e1-4f5d-6e7c-8a9b-0c1d2e3f4a5b"
}
}
响应:
"Session c8a3b2e1-4f5d-6e7c-8a9b-0c1d2e3f4a5b disconnected successfully"
列出所有活动会话
{
"command": "ssh_list_sessions"
}
响应:
[
"c8a3b2e1-4f5d-6e7c-8a9b-0c1d2e3f4a5b",
"d9b4c3a2-5e6f-7g8h-9i0j-1k2l3m4n5o6p"
]
配置
可以通过以下环境变量配置服务器:
| 变量 | 描述 | 默认值 |
|---|---|---|
| MCP_PORT | MCP 服务器的端口 | 8000 |
| RUST_LOG | 日志级别 | info |
功能配置
该项目使用 Cargo 特性来启用或禁用某些功能:
| 特性 | 描述 | 默认值 |
|---|---|---|
| port_forward | 启用 SSH 端口转发支持 | 已启用 |
要构建不包含端口转发的功能:
cargo build --release --no-default-features
贡献
欢迎贡献!请随时提交 Pull Request。
CI/CD 流水线
此项目使用 GitHub Actions 进行持续集成和部署:
- 所有 PR 和对主分支的提交都会自动测试
- 带有 'v' 开头的标记版本将自动发布到 crates.io
- Docker 镜像会自动构建并推送到 Docker Hub
- 主分支的最新标签
- 语义化版本发布的版本标签(如 v1.0.0, v1.0 等)
- 要创建新版本,请确保 Cargo.toml 中的版本与标签匹配(例如,v0.1.0)
- 您需要在您的 GitHub 仓库设置中配置
CARGO_REGISTRY_TOKEN、DOCKERHUB_USERNAME和DOCKERHUB_TOKEN密钥
许可证
本项目根据 MIT 许可证授权 - 详情请参阅 LICENSE 文件。