基于 CLI 的 SSH 代理工具,按 ssh-mcp-server 的能力映射为 Agent 可调用的远端操作能力。
远程执行 · 文件上传 · 文件下载 · 连接配置 · 命令白名单 · 命令黑名单 · Agent Skill 集成
AI 一键安装 · 手动安装 · 配置 · 卸载和清理 · 许可证 · 友情链接
中文 | English
本项目参考 classfang/ssh-mcp-server 的 SSH 操作能力设计,改写为独立 CLI 形式。感谢原项目提供的思路和能力基础。
- 解放双手,自动运维服务器
- 部署代码,更新部署docker
- 配置nginx,配置证书
- 所有ssh能做到的事情
- 列出本地配置中的 SSH 服务器连接
- 在指定远端服务器上执行命令
- 上传本地文件到远端服务器
- 从远端服务器下载文件到本地
- 通过命令黑白名单限制可执行命令
- 通过本地路径白名单限制上传和下载访问范围
安装请阅读 https://github.com/sleepinginsummer/agent-ssh-cli/blob/main/AI_INSTALL.md,按说明安装 CLI 并添加 `SKILL.md`。
- Node.js
>= 18 - npm
>= 8 - 本机网络可访问目标 SSH 服务器
- 目标服务器已开启 SSH 服务
- 如使用私钥认证,私钥文件需对当前用户可读
agentsshcli exec/upload/download的连接缓存支持 macOS/Linux/Windows
- 全局安装:
npm install -g agent-ssh-cli
agentsshcli --help- 导入 SKILL.md:
打开 SKILL.md,将其添加到 agent 中。
初始化配置(格式参数和ssh-mcp-server一致):
mkdir -p ~/.agent-ssh-cli编辑 ~/.agent-ssh-cli/config.json,填写真实连接信息。默认配置文件也可以通过环境变量覆盖:
可以通过以下环境变量修改配置地点
AGENT_SSH_CONFIG=/path/to/config.json配置文件是数组,每一项是一台服务器:
name: 连接名,必须唯一host: SSH 主机地址username: SSH 用户名password/privateKey/agent: 认证方式,三者必须且只能配置一个port: SSH 端口,默认22passphrase: 私钥口令,仅配合privateKey使用pty: 是否分配伪终端,默认trueallowedLocalPaths: 额外允许上传或下载写入的本地路径commandWhitelist: 命令白名单正则数组commandBlacklist: 命令黑名单正则数组
commandWhitelist 和 commandBlacklist 使用 JavaScript RegExp 语法,不是 POSIX 正则;空白字符请写成 \\s,不要写 [:space:]。
完整示例见 example.config.json。~/.agent-ssh-cli/config.json 保存真实连接信息。
参考配置
[
{
"name": "密码服务器",
"host": "192.0.2.10",
"port": 22,
"username": "root",
"password": "******",
"commandBlacklist": [
"(^|[;&|()\\s])rm(\\s|$)",
"(^|[;&|()\\s])shutdown(\\s|$)",
"(^|[;&|()\\s])reboot(\\s|$)"
]
},
{
"name": "密钥服务器",
"host": "198.51.100.10",
"port": 22,
"username": "deploy",
"privateKey": "/path/to/id_rsa",
"passphrase": "******",
"pty": false,
"allowedLocalPaths": [
"./tmp",
"./dist"
],
"commandWhitelist": [
"^pwd$",
"^ls(\\s|$)",
"^cat\\s+/var/log/app\\.log$"
],
"commandBlacklist": [
"(^|[;&|()\\s])rm(\\s|$)",
"(^|[;&|()\\s])shutdown(\\s|$)",
"(^|[;&|()\\s])reboot(\\s|$)"
]
}
]测试命令
agentsshcli list完成安装!
npm uninstall -g agent-ssh-cli
npm cache clean --force
#删除配置文件
rm -rf ~/.agent-ssh-cli