关于 Ssh
Ssh 是一个以 Rust 实现的 SSH 客户端 MCP 服务,面向需要让 LLM 通过 MCP 管理远程 SSH 会话的用户。它支持持久会话、远程命令执行和端口转发。
主要功能
- 01连接 SSH 服务并管理会话
- 02在远程主机执行命令
- 03配置 SSH 端口转发
- 04列出和断开活动会话
适用场景
- 01通过 MCP 建立 SSH 连接
- 02在远程主机运行命令
- 03将本地端口转发到远程服务
MCP 相关
该 MCP 服务向 MCP 客户端提供 SSH 连接、命令执行、会话管理和端口转发能力,并可通过 Docker 或 Cargo 安装。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
SSH-MCP 服务端
这是一个使用 Rust 实现的 SSH 客户端服务端,集成了模型上下文协议(MCP),使大模型(LLM)能够连接到 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!
# Pull the pre-built image from Docker Hub
docker pull mingyang91/ssh-mcp
# Run the server
docker run -p 8000:8000 mingyang91/ssh-mcp
或者自行构建镜像:
# Build the Docker image
docker build -t ssh-mcp .
# Run the server
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 处理程序,使大模型能够通过 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 Agent 认证
{
"command": "ssh_connect",
"params": {
"address": "example.com:22",
"username": "user"
}
}
响应:
{
"session_id": "c8a3b2e1-4f5d-6e7c-8a9b-0c1d2e3f4a5b",
"message": "Successfully connected to [email protected]:22",
"authenticated": true
}
如果连接失败:
{
"error": "Failed to connect: Connection refused"
}
执行命令
{
"command": "ssh_execute",
"params": {
"session_id": "c8a3b2e1-4f5d-6e7c-8a9b-0c1d2e3f4a5b",
"command": "ls -la"
}
}
响应:
{
"stdout": "total 32\ndrwxr-xr-x 5 user group 4096 Jan 1 12:00 .\ndrwxr-xr-x 25 user group 4096 Jan 1 12:00 ..\n-rw-r--r-- 1 user group 142 Jan 1 12:00 file.txt\n",
"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 以及向 main 提交的更改都会自动测试
- 带标签的发行版(以 'v' 开头)会自动发布到 crates.io
- Docker 镜像会自动构建并推送到 Docker Hub
- main 分支使用 latest 标签
- 语义化版本发行版使用版本标签(v1.0.0、v1.0 等)
- 创建新发行版时,请确保 Cargo.toml 中的版本与标签一致(例如 v0.1.0)
- 你需要在 GitHub 仓库设置中配置
CARGO_REGISTRY_TOKEN、DOCKERHUB_USERNAME和DOCKERHUB_TOKEN机密
许可证
本项目采用 MIT 许可证,详情请参阅 LICENSE 文件。
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。