前言¶
在 DeepSeek Harness(DSH)里用 AI 维护个人服务器时,常见情况是:每条远程命令都要重新 SSH 握手,排查节奏被打断;大段日志一次性塞进主会话,上下文很快被占满;让 AI 装软件或改配置时,又担心误执行 rm -rf /、格式化块设备之类会让整台机器报废的操作;不同对话之间 shell 的 cd 和环境变量还会互相污染。社区插件 dsh-ssh-helper(维护者 bcdws,分类 admin-security)把连接、文件与日志操作收进常驻 SSH 池,并在保留日常维护权限的前提下,只拦截会导致「整机报废」的命令。下面介绍它是什么、能做什么,以及如何安装与使用。
这是什么¶
dsh-ssh-helper 是面向个人服务器运维的 DSH 插件:提供 SSH 连接池、一组 SSH 相关 AI 工具,以及针对「毁机」类命令的单层护栏。仓库地址:https://github.com/bcdws/dsh-ssh-helper;社区目录页:https://www.skillhub.cn/plugins/bcdws/dsh-ssh-helper。插件以 MIT 许可证发布,当前 package 版本为 0.5.0,依赖 DSH 引擎 >=0.2.1-rc.2 <0.3.0,底层 SSH 实现使用 ssh2。
认证方式为 key-only:使用本机 SSH key / agent,不支持密码登录,也不存储私钥。
核心功能¶
连接复用与可维护的主机列表¶
每台主机维持一个 SSH 连接,后续命令不再重复握手;断线会自动重连。握手连续超时后会暂停自动重连;SFTP 建链最多等待 15 秒,失败会明确报错,避免挂住会话。
面板可自动刷新 ~/.ssh/config:Host 名与密钥文件名可在弹窗中修改。Host 只改 Host 行;密钥会真实重命名(含 .pub)并更新引用;一次提交只写一次配置,失败则不写入。
安全护栏¶
这不是沙箱,而是防手滑的「安全带」:只拦截 6 类会让整台机器报废的操作。业务目录(如 /srv、/home、/opt、/var/www、/data)上的删除与普通维护不在拦截范围内。计划模式下会拒绝删除类 ssh_run;本地 bash 直连 SSH 的删除也会被拦截。命令匹配针对 shell 文本;脚本内部或通过文件工具写入 /etc 等路径不在同一层判断。真正隔离仍应依赖受限账号、备份与最小权限。
日志旁路分析¶
可选开关,默认关闭。开启后,大日志先脱敏,再交给没有工具的旁路模型做摘要,主会话只收到摘要。敏感日志建议保持关闭。
会话隔离与面板¶
Shell 会话按 agent + session 名隔离;连接共享,但 cd 与环境变量不会在会话间串扰。面板可查看连接状态、隐藏主机、输出上限与旁路开关,并保留最近 50 条脱敏诊断事件。主机可在面板设为「隐藏」:隐藏后 AI 看不到也连不上,面板仍可管理。
AI 工具一览¶
| 工具 | 用途 |
|---|---|
ssh_hosts |
列主机、连接状态、最后错误 |
ssh_run |
执行命令;支持持久 session |
ssh_read / ssh_grep |
读文件、搜内容 |
ssh_write / ssh_edit |
写新文件 / 精确改现有文件 |
ssh_glob |
按文件名/路径找文件 |
ssh_transfer |
上传/下载单个文件 |
安装与启用¶
前置条件:已安装 DSH、Node.js、Git,且能在 ~/.ssh/config 中看到目标主机。
在本地克隆仓库并 link 到当前 profile:
git clone https://github.com/bcdws/dsh-ssh-helper.git
cd dsh-ssh-helper
npm install
dsh plugin --profile <profile> add "link:$PWD"
PowerShell 下最后一行改为:
dsh plugin --profile <profile> add "link:$((Get-Location).Path)"
若 dsh 不在 PATH,请使用 DSH 自带的 CLI 路径,不要猜测。装好后确认:
dsh plugin --profile <profile> list
当 ssh_hosts 相关条目里出现 [policy] 时,说明插件已加载。
也可以把 README 中的「让 AI 自己安装」整段提示词发给 DSH 内的 AI,由它在不修改 ~/.ssh/config、不连服务器的前提下完成 clone、npm install 与 dsh plugin add link:...;profile 或 CLI 路径不明确时应先向用户确认。
典型用法¶
先在 ~/.ssh/config 配好主机与 IdentityFile,然后用自然语言对 AI 说明意图即可,无需点名具体工具。README 中的示例包括:
帮我看看有哪些服务器
查一下 server-a 最近 10 分钟的日志
检查一下 server-a 的健康状态
帮我在 server-b 上安装这个本地 deb 包
经过上面的步骤,AI 会通过连接池与上表工具在对应主机上执行操作。
适用场景与注意¶
适合已在 DSH 中用 AI 做个人 VPS、 homelab 或少量生产机日常运维、且希望减少重复握手、控制日志上下文、并多一层「毁机命令」拦截的开发者。DSH 生态理念是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
务必注意:插件以当前 DSH 进程的权限在本机运行,远程操作仍受你 SSH 账号在服务器上的权限约束。安装前应阅读仓库源码与 MIT 许可证,自行评估是否满足安全要求。护栏不能替代账号隔离与备份策略。
维护者提供的离线测试(无需真实服务器):
npm install
node test/run.mjs --offline
结尾¶
dsh-ssh-helper 把 SSH 连接池、文件/日志工具与有限的毁机命令护栏合在一起,方便在 DSH 里用自然语言运维个人服务器,同时尽量保留日常维护自由度。更多信息见社区目录 https://www.skillhub.cn/plugins/bcdws/dsh-ssh-helper 与 GitHub https://github.com/bcdws/dsh-ssh-helper。