前言¶
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。
- 生命周期管理:提供
status、list、logs、audit、open、config等命令。 - 主机诊断与准备:支持
check <host>做 readiness diagnostics,也支持provision <host>做远端侧准备。 - 主机发现:自动发现
~/.ssh/config中的 Host aliases。 - 会话位置:sessions 和 files 保存在服务器侧,本地只保留隧道。
安装与启用¶
本地需要 Node >= 22.19,并建议使用 passwordless ssh key 登录。远端服务器需要 Linux、Node >= 22.19、dsh 和 systemd。
先安装到 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