dsh-ssh-view:在 DSH Web 里通过 SSH 运维无头 Linux

前言

跑 DeepSeek Harness(DSH)时,Agent 和插件多半在本机或容器里;真正要改配置、看日志、查进程,往往还得另开终端 SSH 到远端无头 Linux。文件管理器、编辑器、tail 各用一套工具,和 DSH 的 Web 界面也接不上。

下面介绍社区插件 dsh-ssh-view(维护者 K0me1j1Fan):在 DSH 的 Web 界面里用 SSH 连上一台 Linux,用整页视图做浏览与编辑文件、看进程、跟日志。插件归类为客户端,注册在 DSH 主面板与侧边栏;目录页见 SkillHub,源码在 GitHub。

这是什么

dsh-ssh-view 是 DSH 的 SSH 服务器视图插件:Host 侧通过 ssh2 建立会话,浏览器侧提供连接页与文件 / 进程 / 日志视图。样式只用 DSH 主题 token,随浅色 / 深色主题切换。

它解决的是「在 DSH Web 里完成日常 SSH 运维」,而不是替代完整 SSH 客户端或跳板机方案。一次只维持一条 SSH 连接;不支持跳板机、sudo 提权、systemd / Docker 服务管理——这些在 README 的已知限制里写得很清楚。

核心功能

能力以 README 中的模块表为准,摘要如下。

连接与凭据

  • 主机、端口、用户名;密码或 SSH 密钥(ssh-agent / ~/.ssh)登录;多套配置;主机指纹 TOFU 校验。
  • 使用密钥时,可把非机密配置保存到本机;DSH 启动后可自动连接最近一次密钥配置(密码配置不会自动连,需先解锁凭据库)。
  • 密码只在 Host 进程内存;可选 AES-256-GCM 加密落盘;密码永不下发到浏览器。

文件与归档

  • 目录浏览、面包屑、新建 / 重命名 / 移动 / 递归删除、上传、下载。
  • 内置文本编辑器,Ctrl/Cmd+S 保存;按内容哈希检测并发修改;二进制与超大文件提示下载。
  • 解压 zip、tar、tar.gz、tgz、tar.bz2、tar.xz、gz、bz2、xz;默认解压到同名目录,并校验路径穿越与链接条目。

进程与日志

  • ps 列表(PID、用户、CPU%、内存%、RSS、时长、状态、命令行),排序、过滤、定时刷新;SIGTERM / SIGKILL(二次确认,拒绝 PID 1)。
  • 对任意日志文件 tail 末尾 N 行,可定时跟随;可探测常见日志路径。

安全相关(Host 侧)

  • /api 路由走 DSH 浏览器会话鉴权;远端路径与命令拼接有注入防护;解压前会拒绝不安全归档条目。

环境要求

安装前对照 README,避免连上后缺子系统或命令。

侧 要求
DSH 在 0.2.0-rc.2 上开发与验证(需要 connection、webServer、clientModules 等 Web 组合)
Node.js >= 20(DSH 自带 Node 22)
目标服务器 Linux + OpenSSH(启用 Subsystem sftp);procps(ps -eo、kill),BusyBox 会退化为 ps aux;支持密码(password / keyboard-interactive);日志按文件 tail,不依赖 journald
网络 运行 DSH 的机器能访问目标 SSH 端口

安装与启用

推荐从 GitHub 经 DSH 插件管理器安装,无需先克隆仓库:

dsh plugin --profile web add github:K0me1j1Fan/dsh-ssh-view

# 没有全局 dsh 时
npx @deepseek-ai/dsh plugin --profile web add github:K0me1j1Fan/dsh-ssh-view

固定版本可在 git 规格后加标签,例如 README 示例:github:K0me1j1Fan/dsh-ssh-view#v0.2.0。当前 package.json 中版本为 0.3.0,以仓库发布标签为准选用。

安装完成后:

  1. 刷新一次 Web 页面(新客户端插件需重新加载)。
  2. 左侧边栏出现服务器形状的「服务器视图」图标。
  3. 点击图标打开连接页。

插件以当前 DSH Host 进程权限运行,并会读写 $DSH_HOME/storages/ssh-view/ 下的配置与指纹文件。安装前建议浏览源码与 MIT 许可证,确认符合你的安全策略。

典型用法

按 README「快速使用」顺序操作即可复现。

  1. 填写主机、端口、用户名。
  2. 选择认证方式:
    - SSH 密钥(推荐):用系统 ssh-agent 已加载的密钥;无 agent 时回退 ~/.ssh 下第一把私钥。不保存密码,也不需要主密码。
    - 密码:需先创建 / 解锁主密码凭据库,才能加密保存密码。
  3. 勾选「保存此连接」;密钥方式可同时勾选「DSH 启动后自动连接」。
  4. 连接成功后:
    - 文件:双击目录进入,双击文本打开编辑器;工具栏可上传、下载、解压、重命名、移动、删除。
    - 进程:搜索过滤,列头排序;行尾停止按钮选 SIGTERM / SIGKILL 并确认。
    - 日志:输入绝对路径或点「常用日志」,勾选「跟随刷新」每 2.5 秒重读末尾 N 行。

可选配置写在 cordis.patch.yml 里 ssh-view 行的 config,例如调整数据目录或凭据库自动锁定时间:

- id: ssh-view
  config:
    dataDir: /var/lib/dsh/ssh-view
    autoLockMinutes: 30
    autoConnect: true

常用键包括 dataDir(默认 $DSH_HOME/storages/ssh-view)、connectTimeoutMs(默认 20000)、maxTextBytes(编辑器单文件上限,默认 2 MB)等,完整表格见 README「配置」一节。

适用场景与注意

适合谁

  • 已在用 DSH Web profile,需要偶尔登录一台无头 Linux 改文件、杀进程、跟日志,又不想在 DSH 和独立 SSH 工具之间来回切换。
  • 希望连接配置(尤其密钥模式的非机密部分)留在本机,并在 DSH 启动后自动连上最近一台密钥主机。

务必留意的边界

  • 插件不做 sudo / 提权:SSH 用户能做什么,视图就能做什么;建议最小权限账号。
  • DSH Web 默认应只监听回环地址;不要用 --host 0.0.0.0 把带 SSH 能力的界面暴露到不可信网络。
  • Host 被攻破或 Web 暴露时,密钥在解锁期间可能在内存中——README「安全模型」里写明了威胁边界。
  • SkillHub 等社区目录与 DeepSeek / 幻方无官方从属关系;插件来自社区维护者,星标与迭代以 GitHub 为准。

结尾

dsh-ssh-view 把 SSH 上的文件、进程、日志收进 DSH Web 同一套界面,并区分密钥与密码两种凭据路径、加密落盘与 TOFU 指纹。若你的 workflow 已经以 DSH 为中心,它减少「再开一套 SSH 运维工具」的步骤。

  • 目录页:https://www.skillhub.cn/plugins/K0me1j1Fan/dsh-ssh-view
  • GitHub:https://github.com/K0me1j1Fan/dsh-ssh-view
羽毛球分组比赛记分
小程序二维码

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

Xiaoye