본문으로 건너뛰기
Y

dsh-server-toolbox

yu7777777777/dsh-server-toolbox

Sidebar registry for SSH servers, expiry dates and service URLs, with Windows DPAPI-encrypted password and private-key storage, explicit host-key verification, login tests, and agent SSH execution that asks per command by default or can follow the session permission.

설치

dsh plugin --profile web add github:yu7777777777/dsh-server-toolbox

README

DSH 服务器工具箱

DSH 服务器工具箱图标

在 DSH 左侧栏管理 SSH 服务器和已部署服务,让 AI 按需检索连接信息、测试登录,并在授权后执行远程命令。

登记一次服务器信息,以后不必在对话中反复提供地址和连接方式。

功能

  • 服务器管理:添加、编辑、搜索和删除服务器,记录主机、端口、SSH 用户和备注。
  • 服务入口:每个服务只需填写名称和访问网址,保存后可以点击打开。
  • 密码登录:在专用表单中保存登录密码,使用 Windows DPAPI 当前用户加密,不发送到聊天。
  • 连接验证:获取并核对主机指纹,测试 SSH 登录;远程命令需要单独授权。
  • AI 调用:通过 server_toolbox 检索服务器,通过 server_ssh 测试连接或执行获准的命令。

安装

需要支持 Cordis 插件和插件管理器的 DSH。当前密码保存功能仅支持 Windows。

可以在 DSH 中发送:

请通过插件管理器安装这个服务器工具箱插件:
https://github.com/yu7777777777/dsh-server-toolbox

也可以在支持安装外部包的插件管理器中使用 GitHub 包地址:

github:yu7777777777/dsh-server-toolbox

安装完成后,按插件管理器提示刷新页面或重启 DSH,然后打开左侧栏的「服务器工具箱」。安装行为会运行第三方插件代码,请只安装你信任的来源。

GitHub 地址安装需要可用的 Git 和网络。私有仓库还需要相应访问权限。不同 DSH 版本的插件管理入口和兼容性可能不同,请以安装结果为准。无需为了使用插件而运行开发测试。

开始使用

添加服务器

点击「添加服务器」,填写:

字段示例说明
服务器名称我的服务器用于区分不同服务器
主机 / IPserver.example.com服务器域名或 IP 地址
SSH 用户deploy服务器上的登录用户名
SSH 端口22按实际 SSH 端口填写
认证方式用户名+登录密码默认使用密码,也支持 SSH Agent、加密保存的导入私钥及兼容旧路径

到期日期(选填):添加或编辑服务器时可从日历中选择日期,保存后会显示在服务器卡片上;留空表示未设置,清空后保存可移除。该日期仅用于记录,不会自动续费、发送定时提醒或阻止 SSH 连接。日期按日历日保存,不包含具体时刻或时区。

登录密码只在插件的专用输入框中填写。编辑服务器时,替换密码框留空表示保留已保存的密码,不会自动回填。

查看已保存密码:编辑已保存的密码认证服务器,在「登录凭证」中点击「查看已保存密码」,再确认显示。密码只出现在单独的只读区域,15 秒后隐藏;可点击「立即隐藏」,窗口失焦或切到后台时也会隐藏。取消编辑、切换服务器、改变连接目标或开始填写新密码会卸载查看区域,取消或忽略未完成的查看请求。该操作不复制到剪贴板,不会覆盖替换密码框,也不通过普通模型工具返回密码。

查看是已登录 DSH owner 信任范围内的功能,不是 Windows 身份验证或真人证明:具有相同 owner 权限的 API 客户端及本机同用户高权限程序仍可能调用专用通道。隐藏仅移除页面中的显示与引用,不保证清除开发者工具里的网络响应或物理擦除 JavaScript 字符串;不要在共享屏幕、录屏或不可信设备上查看。

导入或粘贴私钥

认证方式选择「私钥(导入或粘贴)」,保持保存方式为「导入或粘贴,本机加密保存」,然后选择一个私钥文件,或展开专用粘贴区填写私钥内容,再点击保存。

  • 导入的是文件内容,不是路径;在同一 Windows 用户下保存成功后,移动或删除原私钥文件不会影响连接。请仍保留自己的安全备份。
  • 选择实际的 SSH 私钥文件,不是存放密钥的文件夹,也不是以 .pub 结尾的公钥。只支持未加额外口令的私钥,最大 32 KiB;无法解析或需要口令的私钥会拒绝保存。
  • 私钥经 Windows DPAPI CurrentUser 加密后,独立交由 DSH 凭证服务保存,不写入服务器清单,不回填已保存内容,也不通过模型工具返回。导入不会修改原文件。
  • 修改连接目标、切换认证方式或取消编辑会清除本次临时导入;编辑已有连接时不提供新内容就保留已保存私钥。
  • 旧版路径连接仍可使用「旧路径方式」,但那种方式依旧受文件位置影响。路径记录不会自动迁移;请自行重新选择文件导入后保存。
  • 加密私钥和密码一样依赖当前 Windows 用户。迁移电脑或 Windows 用户后需要重新导入;本机同用户高权限程序仍在信任边界内。

远程命令审批方式

服务器列表上方的「设置」中可以选择:

选项行为
每次执行都询问(默认)每条远程命令都请求一次 DSH 授权,仅当次有效
跟随会话权限只有当前会话同时为「完全访问」且已关闭审批时,命令直接执行、不再弹窗;其他会话仍请求授权或拒绝

说明与边界:

  • 「跟随会话权限」不是无限制放行。会话处于只读、工作区写入,或只是「审批关闭但沙箱受限」时,仍会走原来的授权流程。
  • 无法读取当前会话权限(服务缺失、预设为自定义、读取异常)时,一律回退为请求授权,不会静默跳过。
  • 该设置只能在本插件页面修改;模型工具不能改自己的审批方式。工具结果会标注本次是 approvedBy: per-call(逐次授权)还是 session-policy(会话策略放行)。
  • 主机指纹与已保存凭证仍是硬性前提:未确认指纹或未保存密码/私钥时,即使会话允许也不会执行。
  • 选择该模式意味着:当你把会话设为完全访问时,这条通道上的远程命令不再有人工确认环节。请只在确实信任当前会话内容时使用。

添加服务网址

在「已部署服务」中点击「添加条目」,填写名称和网址即可:

名称服务网址
网站后台https://panel.example.com
文件管理http://192.168.1.10:8080

网址需要以 http:// 或 https:// 开头,可以带端口;不要填写包含账号、密码或访问令牌的链接。插件不会自动探测这些网址。

核对指纹并测试登录

  1. 点击「获取主机指纹」。
  2. 通过服务器控制台或管理员提供的独立可信渠道,核对完整 SHA256 指纹。
  3. 确认目标主机、端口与指纹一致后,再勾选确认并保存信任。
  4. 点击「测试 SSH 登录」。此操作只验证认证,不执行远程命令。

主机指纹用于确认服务器身份,不是登录密码。**不能只因为页面显示了某个指纹就直接信任。**如果以后提示指纹变化,应先核实是否重装了服务器、更换了 SSH 主机密钥,或连接到了错误的主机。

在对话中使用

登记完成后,可以对 DSH 说:

列出我登记的服务器,以及各自的服务网址。
测试“我的服务器”的 SSH 登录,不要执行远程命令。
查看“我的服务器”的磁盘使用情况,执行前向我请求授权。

是否能够执行,取决于当前会话的工具配置、服务器连接状态及 DSH 的授权结果。拒绝授权、授权不可用或未确认主机指纹时,不会绕过检查执行。

安全与限制

  • 密码与元数据分开存储:密码经 Windows DPAPI 加密后交由 DSH 凭证服务保存;服务器名称、地址、用户名和服务网址仍保存在本地 data/servers.json 中,不是加密数据。
  • 加密不等于隔离:同一 Windows 用户权限下的高权限程序仍可能访问运行时秘密,不应把 DPAPI 当作抵御已控制本机程序的安全边界。
  • 迁移需要重新配置:更换电脑或 Windows 用户后,保存的密码可能无法解密,需要重新输入。修改服务器主机、端口、用户或认证目标后,应重新保存密码并核对指纹。
  • 远程执行有风险:每次远程命令都需要 DSH 单独授权。超时、断网或取消不保证远端进程已停止;输出脱敏也不是通用的敏感内容过滤器。
  • 认证支持有边界:加密私钥的口令、OTP/MFA 暂无完整交互支持;SSH Config 别名仅供登记,内置连接不会解析 ProxyJump 等配置。插件的指纹信任与系统 OpenSSH 的 known_hosts 独立。
  • 注意本地备份:不要上传服务器数据、凭证、私钥、运行日志或未脱敏截图。卸载、更新或移动本地安装目录前,请先备份需要保留的资料;不要把服务器数据当成插件源码提交。

开发与测试(可选)

仅修改源码或参与开发时需要以下环境:Windows、Node.js 22 或更高版本、pnpm 11.28.5。

pnpm install --ignore-scripts --frozen-lockfile
pnpm test

测试覆盖元数据管理、服务网址验证、通信协议,以及本机临时 SSH 服务器上的密码认证、主机指纹、授权拒绝、DPAPI 加解密和输出脱敏。测试使用运行时生成的虚构凭证,不需要真实服务器。

完整集成测试依赖 Windows;本地测试和 GitHub Actions 通过不代表所有 DSH 版本、界面主题、网络环境或真实服务器均已兼容。

许可证

本项目使用 MIT License,允许按许可证条款使用、修改和分发,须保留版权声明和许可证文本。第三方依赖仍遵循其各自的许可证。

관련 플러그인