内容
# MCP SSH 管理器
MCP本地服务器,用于从支持Model Context Protocol的客户端管理SSH服务器。
## 功能
- 执行远程命令。
- 上传、下载和同步文件。
- 打开持久的SSH会话和隧道。
- 检查健康状况、进程、服务和日志。
- 创建备份和操作MySQL、PostgreSQL或MongoDB数据库。
- 部署文件,包括备份、权限、所有者和服务重启。
- 激活工具组以减少上下文。
## 要求
- Node.js 18 或更高版本。
- 在此存储库中执行 `npm install`。
- 配置服务器的SSH访问权限。
- 可选:根据使用的工具,安装 `rsync`、`sshpass`、数据库客户端或Docker。
## 快速入门
```powershell
npm install
npm test
```
创建 `.env`:
```env
SSH_SERVER_PROD_HOST=example.com
SSH_SERVER_PROD_USER=root
SSH_SERVER_PROD_PORT=22
SSH_SERVER_PROD_KEYPATH=C:\Users\me\.ssh\id_rsa
SSH_SERVER_PROD_DEFAULT_DIR=/var/www/app
```
使用 `stdio` 在客户端注册MCP:
```json
{
"mcpServers": {
"ssh-manager": {
"command": "node",
"args": ["D:/work/ssh-manager-mcp-server/src/index.js"],
"env": {
"SSH_ENV_PATH": "D:/work/ssh-manager-mcp-server/.env"
}
}
}
}
```
不要在MCP客户端使用 `npm start`。客户端必须通过 `stdio` 启动 `node src/index.js` 作为本地进程。
## 文档
请按以下顺序阅读:
1. [快速入门](QUICKSTART.md)
2. [安装](INSTALLATION.md)
3. [文档索引](docs/README.md)
4. [MCP客户端安装](docs/MCP_CLIENT_INSTALLATION.md)
5. [工具管理](docs/TOOL_MANAGEMENT.md)
6. [安全模式](docs/SECURITY_MODES.md)
7. [部署](docs/DEPLOYMENT_GUIDE.md)
8. [备份](docs/BACKUP_GUIDE.md)
9. [别名和钩子](docs/ALIASES_AND_HOOKS.md)
## 配置
`.env` 文件使用以下格式:
```env
SSH_SERVER_<NAME>_HOST=hostname
SSH_SERVER_<NAME>_USER=username
SSH_SERVER_<NAME>_PASSWORD=password
SSH_SERVER_<NAME>_KEYPATH=~/.ssh/id_rsa
SSH_SERVER_<NAME>_PORT=22
SSH_SERVER_<NAME>_DEFAULT_DIR=/path
SSH_SERVER_<NAME>_SUDO_PASSWORD=password
SSH_SERVER_<NAME>_PLATFORM=linux
SSH_SERVER_<NAME>_MODE=unrestricted
```
有用的字段:
- `PASSWORD` 或 `KEYPATH`:SSH身份验证。
- `PASSPHRASE`:密钥的密码短语。
- `DEFAULT_DIR`:工具未接收 `cwd` 时使用的目录。
- `PLATFORM`:默认为 `linux`,Windows上的OpenSSH为 `windows`。
- `PROXYJUMP` 或 `PROXYCOMMAND`:SSH跳转或代理命令。
- `MODE`、`ALLOW_PATTERNS`、`DENY_PATTERNS`、`AUDIT_LOG`:服务器策略。
还可以使用 `SSH_CONFIG_PATH` 的TOML。参见 [MCP客户端安装](docs/MCP_CLIENT_INSTALLATION.md)。
## 配置路径
`.env` 的顺序:
1. `SSH_ENV_PATH`
2. `%USERPROFILE%\.ssh-manager\.env`
3. 当前目录的 `.env`
4. `%USERPROFILE%\.env`
5. 项目旁边的 `.env`
TOML从 `SSH_CONFIG_PATH` 或 `~/.codex/ssh-config.toml` 加载。
## 开发
```powershell
npm test
npm run lint
npm run coverage
npm run validate
npx knip
```
`npm run validate` 运行lint、测试和覆盖率。全局覆盖率需要包含 `c8` 的代码的85%。
## 安全
- 不要提交 `.env`、密钥或密码。
- 优先使用SSH密钥而不是密码。
- 在敏感服务器上使用 `readonly` 或 `restricted`。
- 在启用破坏性工具之前,请查看 [安全模式](docs/SECURITY_MODES.md)。