Skip to content

v0.7.2 - Target Lock: 防止 AI 多服务器误操作

Latest

Choose a tag to compare

@github-actions github-actions released this 05 Feb 02:51
· 2 commits to main since this release

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 排除 targetConfirmationToken
  • src/tools/exec.ts -- 所有 Schema 增加 alias/targetConfirmationToken;集成 TargetGuard
  • src/tools/sftp.ts -- 所有 Schema 增加 alias/targetConfirmationToken;返回值增加 server
  • src/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