Target Lock -- 目标锁定机制
The only MCP SSH tool that truly prevents AI from accidentally running commands on the wrong server.
AI 在多服务器场景下最容易犯的错误就是搞混服务器 IP,把命令发到错误的服务器上。v0.7.2 从根本上解决了这个问题。
核心特性
Target Lock(目标锁定 + 切换确认)
追踪 AI 当前操作的目标服务器,当目标切换时强制确认,通过加密 token 机制确保 AI 无法绕过。
| 场景 | 是否需要确认 |
|---|---|
| 单服务器连接 | 不需要 -- 零开销 |
| 多服务器,连续操作同一台 | 不需要 -- 零开销 |
| 多服务器,首次操作 | 不需要 |
| 多服务器,切换到另一台 | 需要确认 |
| exec_batch 批量操作 | 不需要 -- 本身就是多目标 |
切换确认流程:
第1次调用: exec({ command: "ls", host: "B服务器" })
--> 返回: { targetSwitchRequired: true, targetConfirmationToken: "xxx", warning: "检测到服务器切换!..." }
第2次调用: exec({ command: "ls", host: "B服务器", targetConfirmationToken: "xxx" })
--> token 校验通过,执行命令
所有工具支持 alias 参数
用服务器别名代替原始 IP,更难搞混:
exec(alias: "us-prod", command: "df -h")
sftp_ls(alias: "jp-staging", path: "/var/log")
所有输出显示服务器环境标签
每条命令结果都标注当前执行环境:
[服务器: us-prod (root@1.2.3.4) | 环境: PRODUCTION]
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 100G 45G 55G 45% /
其他改进
- SFTP 操作增加多连接安全检查,返回值包含
server身份信息 - 连接第二台服务器时,返回信息列出所有活跃连接作为提醒
- disconnect 后自动重置目标锁定状态
- ConfirmationManager 兼容 targetConfirmationToken
安装 / 更新
npx @erliban/ssh-mcp-server或全局安装:
npm install -g @erliban/ssh-mcp-server@latest完整改动
新增文件:
src/utils/target-guard.ts-- 目标锁定守卫核心模块(~180 行)
修改文件(11 个):
src/types/index.ts-- ServerIdentity 增加 label 字段src/utils/confirmation-manager.ts-- hashParams 排除 targetConfirmationTokensrc/tools/exec.ts-- 所有 Schema 增加 alias/targetConfirmationToken;集成 TargetGuardsrc/tools/sftp.ts-- 所有 Schema 增加 alias/targetConfirmationToken;返回值增加 serversrc/core/sftp-operator.ts-- getSftp 增加多连接安全检查src/tools/connection.ts-- disconnect 调用 resetTarget;connect 返回活跃连接列表src/index.ts-- 初始化 TargetGuard 并注入各工具;更新所有工具定义README.md/README_CN.md/CHANGELOG.md/package.json
Full Changelog: v0.6.0...v0.7.2