dsh-remote-shell:DSH 远程 Shell 技能插件

DSH 的设计理念是“一切皆插件”。在智能体开发或运维场景中,经常需要通过 SSH、Telnet 或 WinRM 执行命令、传输文件。dsh-remote-shell 是一个 DSH 插件,它将 remote-shell 技能打包在一起,提供安全的远程操作能力。

定义与定位

这是一个由 wutian122 维护的 DSH 插件(MIT 许可证)。它解决了在 DSH 环境中直接进行远程系统管理的问题,集成了 SSH、SFTP、Telnet 和 WinRM 协议支持,并内置了基于 Fernet + PBKDF2-HMAC-SHA256 的加密凭据库。

核心功能

该插件提供的技能包含以下能力:
1. 远程命令执行:支持 SSH、WinRM、Telnet 协议。支持单条命令、批量执行、脚本执行、远程系统信息查询和健康检查。
2. SFTP 文件传输:提供上传、下载和目录列表功能。
3. 加密凭据库:登录脚本不接受明文密码。凭据始终从加密库中读取。可以使用 credctl 工具进行凭据的增删改查。
4. 安全拦截:默认拦截可能发生变更的命令,只有显式使用 --auto-confirm 标志后才会执行。

安装与启用

从 npm 注册表安装:

dsh plugin --profile web add dsh-remote-shell

从本地代码库安装(用于开发或测试):

dsh plugin --profile web add /path/to/dsh-remote-shell

安装后,需要重启 dsh web 才能使插件生效。技能在技能目录中显示为 remote-shell(提供者 dsh-remote-shell,来源 bundled)。

工作原理

dsh-remote-shell 是一个 Cordis 插件,它注入了一个 skills provider。插件加载时会扫描 skills/ 目录中的 SKILL.md 文件,解析 YAML frontmatter,并将技能注册到主注册表(rank 600,来源 bundled)。
该 provider 是不可变的,不执行文件监视或轮询。如果存在缺失或格式错误的技能,它会优雅降级(跳过该技能,不抛出错误)。

安全与注意事项

  • 代码执行风险:安装此插件会在本地机器上运行第三方代码。
  • 凭据管理:凭据库的主密码由用户自己管理,插件不会存储或传输该主密码。
  • 行尾格式:SKILL.md 被锁定为 LF(\n)行尾。因为提供者对 frontmatter 的检测需要精确的 --- 行,CRLF 检出会导致提供者跳过该技能。

依赖与开发

技能脚本使用 Python 3 编写。首次使用时,需要按照 SKILL.md 中的说明安装第三方库,例如 paramiko(用于 SSH/SFTP)和 pywinrm(用于 WinRM)。
运行单元测试(使用 Node.js 内置测试运行器):

node --test

适用场景与资源

该插件适合需要在 DSH 中实现自动化远程运维、跨平台命令执行或文件传输的场景。
- 插件目录页
- GitHub 仓库

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜