dsh-web-relay:不经端口转发,把本机 dsh web 交给远程设备

前言

DeepSeek Harness(dsh)的 dsh web 只监听 127.0.0.1,这是安全模型的一部分:认证面向单操作者,启动令牌换长期 Cookie,没有多用户与会话吊销。人在外网时,若只想用手机或另一台电脑继续用家里那台机器上的 Web 界面,常见做法是 VPN 或路由器端口转发——前者要额外维护一套接入,后者等于把能执行命令的界面直接暴露到公网,和 DSH 的设计前提冲突。

下面介绍社区插件 dsh-web-relay(维护者 LFF28):内网主机主动连出一台自建中继,经 SSH 反向隧道和 Caddy 网关,在不开入站端口的前提下,让远程设备通过 HTTPS 访问本机 dsh web。

这是什么

dsh-web-relay 是 DSH 的联网类插件(npm 包名 dsh-web-relay,当前资料中版本 0.1.0,MIT 许可)。它解决的是:在不改 dsh web 仍只绑 loopback 的前提下,从公网侧安全地「用到」这台 Web 控制台。

中继侧只依赖系统自带的 sshd 与 Caddy,不安装本仓库代码;连接方向始终由内网主机发起,浏览器只与中继通信。

核心功能

资料中可核对的能力如下。

拓扑与不变量

flowchart LR
  D["设备<br/>手机 / 电脑"] -->|"HTTPS + 网关口令"| R["中继服务器<br/>Caddy + sshd"]
  R -->|"SSH 反向隧道<br/>由内网主机主动拨出"| H["内网主机<br/>dsh web"]
  • 内网主机不开放任何入站端口;隧道端点在中继上只绑 loopback,能连它的只有同机 Caddy。
  • 设置页填写参数后点「部署」,引导会在中继上幂等完成受限账号、sshd 加固、Caddy、证书与隧道;失败可原样重跑。
  • 四层彼此独立的校验:TLS、网关口令、DSH 会话 Cookie、Host/Origin 围栏;中继上不存 DSH 凭据,对外通常只开一个 HTTPS 网关端口。

你会得到什么(README 归纳)

  • 穿透 NAT,且不把 dsh web 直接绑到公网接口。
  • 部署完成后终端会打印访问 URL,以及根证书指纹、中继主机密钥指纹、Caddy 版本等信息(示例见下文典型用法)。
  • 包内文档覆盖工作原理、部署、配置项、本机/中继改动、安全设计与排障(仓库 docs/ 目录)。

安装与启用

前置条件(来自 README):

  • 一台有公网地址的中继(如 VPS),安全组放行将要使用的网关端口。
  • 中继上管理账号支持公钥登录,且可免密 sudo。
  • 本机已安装 DSH,能正常运行 dsh web。

从 npm 安装(官方命令,需 web profile):

dsh plugin --profile web add dsh-web-relay

安装后重启 dsh web,插件才会加载设置页与相关逻辑。

典型用法

1. 在本机完成首次配置

必须在运行 dsh web 的那台机器本机打开设置:DSH 对非 loopback 访问会把设置持久化降级为内存,远程页面无法写入配置。

在本机浏览器访问:

http://127.0.0.1:<dshPort>

进入 设置 ▸ 远程访问,填入中继地址、管理账号、网关端口与网关口令等,点击「部署」。

2. 收藏远程访问地址

部署成功后,终端会出现类似输出:

dsh-web-relay: https://203.0.113.7:8443/
  根证书指纹 SHA256:…
  中继主机密钥 SHA256:…
  Caddy v2.11.4

将第一行的 HTTPS 地址保存到手机或外出用的电脑。访问时需输入部署时设置的网关口令,再按 DSH 常规定完成会话认证。

3. 根证书(强烈建议)

中继使用私有 CA 时,浏览器会提示证书不受信任。README 说明:不安装 CA 则只有加密、没有身份验证。在设置页状态区「下载根证书」,核对指纹后安装到设备,可减少警告并恢复对中继身份的校验。

配置说明

设置页字段包括中继地址、管理账号、网关端口、网关口令等部署参数;另有包内默认值可调的行为项(如重连退避、超时、入口开关)。字段含义见仓库 configuration.md。

适用场景与注意

适合谁

  • 已有或可自备一台 VPS 作中继,希望在外网用浏览器操作家里/办公室那台 DSH,又不想在内网主机上开入站端口。
  • 能接受自建中继的运维成本,并愿意按文档做网关口令与 TLS 相关配置。

务必知晓

  • 插件在当前 dsh 进程权限下运行;安装前应阅读源码与 MIT 许可证,理解 安全设计 中的威胁模型与已知限制。
  • 网关口令是必需项,不是可选加固;DSH 自身认证强度不足以直接面向公网。
  • 中继上建议只跑 sshd 与 Caddy,且只暴露网关所需 HTTP(S) 端口——多开端口可能增加会话 Cookie 被读到的面。
  • 中继被攻破时,隧道上的明文可能被读取;这是该架构的固有代价。
  • 社区目录 SkillHub 插件页 与 GitHub 仓库由社区维护,与 DeepSeek / 幻方无官方从属关系;DSH 生态本身是「一切皆插件」,本文仅介绍该插件在资料中写明的行为。

结尾

dsh-web-relay 用「内网主动出站 + 中继 TLS 与网关口令 + 本地仍只监听 127.0.0.1」的方式,把远程访问和 DSH 的单操作者安全边界拆开处理。若你的场景符合上文前置条件,可按 npm 安装命令启用,并在本机设置页完成一次性部署。

羽毛球分组比赛记分
小程序二维码

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

小夜