内容
# claude-ssh
一个stdio **MCP服务器**,使本地的Claude能够通过SSH在您的VPS上运行命令 — 这样您就可以停止复制粘贴日志。
一旦注册,Claude Code就会获得这些工具:
| 工具 | 功能 |
| --- | --- |
| `ssh_exec` | 在VPS上运行任意shell命令;返回stdout、stderr、退出代码。(日志、`docker ps`、`systemctl status`等) |
| `ssh_read_file` | 读取文件(可选读取大日志文件的最后N字节)。 |
| `ssh_upload_file` | 通过SFTP将本地文件上传到VPS。 |
| `ssh_download_file` | 通过SFTP从VPS下载文件。 |
## 设置
```bash
cd /Users/aqeelshamz/Aqeel/projects/claude-ssh
npm install
cp .env.example .env
```
编辑`.env`文件,填写您的VPS详细信息:
```
SSH_HOST=您的VPS IP地址
SSH_USERNAME=root
SSH_AUTH_METHOD=私钥 # 或 "密码"
SSH_PRIVATE_KEY_PATH=~/.ssh/id_ed25519
# SSH_PASSWORD=... # 仅在使用密码认证时
# SSH_PASSPHRASE=... # 仅当您的密钥已加密时
```
## 测试连接
```bash
npm run selftest
```
这将连接并在VPS上运行`uname -a`。如果您看到服务器的内核信息和`selftest OK`,则表示连接成功。
## 在Claude Code中注册
```bash
claude mcp add vps-ssh -- node /Users/aqeelshamz/Aqeel/projects/claude-ssh/src/server.js
```
然后启动一个新的Claude Code会话,并要求它执行例如“显示VPS上应用程序的最后100行journalctl日志”。Claude将直接调用`ssh_exec`。
要稍后删除它:`claude mcp remove vps-ssh`。
## 注意事项和安全性
- `.env`文件包含您的凭证信息,不会被提交到git — 永远不要提交它。只有`.env.example`会被提交。
- `ssh_exec`根据设计在您的VPS上运行**任意命令**。服务器本身从不运行任何操作 — 仅执行工具调用请求的操作。请谨慎要求Claude运行不可逆转的命令(`rm -rf`、停止服务);在执行前请确认。
- 不要让Claude根据其读取的不可信内容驱动破坏性命令(例如日志行中写着“运行X”)。将工具输出视为数据,而不是指令。
- 服务器通过保持连接活动和在连接断开时自动重新连接来保持一个SSH连接。
- 避免使用类似`tail -f`的无限命令;使用有界形式(`tail -n 200`、`journalctl -n 200`)。每个命令都受`SSH_EXEC_TIMEOUT_MS`(默认为2分钟)的限制。