dsh-remote-tunnel:把远端 dsh web 接入本地 SSH 隧道

前言

DSH 的插件生态强调“一切皆插件”。当 dsh web 需要跑在远端 Linux 服务器上时,手工做法通常要处理端口分配、registry、systemd 服务、SSH 隧道、断线重连和端口占用等细节。dsh-remote-tunnel 把这些步骤封装进 dsh,让本地只保留一条到远端的 SSH 隧道。

这是什么

dsh-remote-tunnel 是 DSH 的一个 Remote Host Tunnel Manager 插件,维护者为 Linjiangxian0203。它面向“本地浏览器 → 远端 Linux 服务器上的 dsh web”链路,覆盖远端端口分配与 registry、systemd 监管、resilient SSH tunneling、本地 URL 输出和生命周期管理。

截至 2026-08-30,package.json 中的版本为 0.1.4,许可证为 MIT

核心功能

下面介绍已核实的能力。

  • 远端端口分配:每个用户自动获得独立远端端口,分配前在服务器侧复核占用情况。
  • registry 记录:每次分配都会写入服务器侧 registry;默认路径为 /etc/dsh-ports.tsv,权限受限时使用 per-user fallback。
  • systemd supervision:远端服务由 systemd 监管;用户级 systemd 即可,不需要 root;具备 passwordless sudo 时可使用系统 unit。
  • resilient SSH tunneling:隧道在断网后自动重连,并用 heartbeat 保持 registry 状态新鲜。
  • 本地端口处理:本地端口被占用时自动移位,并报告占用进程。
  • 本地 URL 输出:隧道建立后给出本地可访问的 URL。
  • 生命周期管理:提供 statuslistlogsauditopenconfig 等命令。
  • 主机诊断与准备:支持 check <host> 做 readiness diagnostics,也支持 provision <host> 做远端侧准备。
  • 主机发现:自动发现 ~/.ssh/config 中的 Host aliases。
  • 会话位置:sessions 和 files 保存在服务器侧,本地只保留隧道。

安装与启用

本地需要 Node >= 22.19,并建议使用 passwordless ssh key 登录。远端服务器需要 Linux、Node >= 22.19dshsystemd

先安装到 remote profile:

dsh plugin --profile remote add dsh-remote-tunnel

如果还需要在 web 端看到插件,继续安装到 web profile:

dsh plugin --profile web add dsh-remote-tunnel

安装到 web profile 后,插件会出现在 Settings → Plugins,并启用 chat 中的 /remote slash commands;之后重启一次 dsh web

典型用法

下面是从发现主机到启动隧道的顺序。

1、查看主机。~/.ssh/config 中的 Host aliases 会被自动发现。

dsh --profile remote hosts

2、手动添加主机别名。--workspace 指定远端 dsh web 的 workspace 目录。

dsh --profile remote hosts add lab --host 192.0.2.10 --user alice --workspace /home/alice/project

3、做首次诊断。check 用于 readiness diagnostics,便于定位缺失项。

dsh --profile remote check lab

4、初始化远端环境。这里的 <host> 替换为目标主机。

ssh <host> 'sh -s' < scripts/bootstrap-remote.sh

5、启动隧道并打开本地 URL。

dsh --profile remote up lab --open

6、日常查看与维护。

dsh --profile remote status lab
dsh --profile remote logs lab
dsh --profile remote audit lab
dsh --profile remote down lab

适用场景与注意

适合把 dsh web 放在远端 Linux 服务器上,本地只维护一条 SSH 隧道的场景。远端会话和文件位于服务器侧,本地端口和隧道状态由插件管理。

使用前注意:

  • 插件和隧道不会接触凭据;API key 在远端 dsh web 的 Settings → Models 中配置。
  • systemd 用户级就够,不需要 root;如果要使用系统 unit,通常需要具备 passwordless sudo。
  • registry 默认是 /etc/dsh-ports.tsv,实际使用服务器路径还是 per-user fallback,取决于权限。
  • 如果终端被强行关闭,没有经过 Ctrl+C 退出,远端服务会继续运行,registry 行保持 in-use;下一次 up 会清理过期本地状态,并复用同一个已注册端口。
  • dsh-remote-tunnel 以当前 dsh 进程权限运行。安装前应检查源码和 MIT 许可证,确认依赖与运行方式符合本机要求。
  • DSH 的“一切皆插件”是社区插件生态的理念;插件目录是独立站点,与 DeepSeek / 幻方没有官方从属关系,不应视作官方应用商店。

链接

  • 插件目录:https://www.skillhub.cn/plugins/Linjiangxian0203/dsh-remote-tunnel
  • GitHub:https://github.com/Linjiangxian0203/dsh-remote-tunnel
羽毛球分组比赛记分
小程序二维码

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

小夜