dsh-access-gate:为 DSH 远程 /api 访问提供密码门禁

前言

DSH(DeepSeek Harness)可以通过插件扩展 Web 侧能力。对于需要通过公网域名或局域网 IP 访问 DSH Web 的场景,远程 /api 访问如果没有密码门禁,默认放行会把远程访问直接暴露出来。dsh-access-gate 是为这类场景做的认证门禁插件:配置密码后限制非本机直连访问,同时保留本机使用体验,并在卸载时还原副作用。

这里提到的 DSH 插件生态强调“一切皆插件”;社区目录是独立站点,不代表官方应用商店。

这是什么

dsh-access-gate 是 DSH 远程访问认证门禁插件,维护者为 bamboostrip,许可证为 MIT。它主要为远程 /api 访问提供密码门禁,默认无密码,并提供本机原生目录选择与零残留卸载能力。

核心能力

下面介绍已核实的功能点。

  • 默认无密码:未配置密码时,远程直接放行。
  • 远程密码门禁:配置密码后,非本机直连访问需要密码登录,登录使用 HttpOnly Cookie,默认 7 天有效。
  • 本机目录选择:本机添加工作区时可打开官方原生目录对话框;远程自动降级为应用内浏览器。
  • 替代 dsh-lan-access:提供 webserver 0.0.0.0 绑定和 crypto.randomUUID polyfill。
  • 安全处理:密码比较使用 sha256timingSafeEqual,并包含防开放重定向、Host 欺骗封死等安全处理。
  • 源码与卸载:提供 TypeScript 源码和编译产物,外部 API 契约集中在 src/types.ts;卸载时通过 ctx.effect 清理回调还原副作用,声称不修改 DSH 源码、不写入用户配置文件。

安装与启用

先安装插件:

dsh plugin --profile web add dsh-access-gate

安装后重启 DSH 生效。默认情况下没有密码,远程可以直接访问。

如果需要启用密码门禁,可以二选一:

  1. 通过 DSH 设置界面 → 插件配置 → 访问认证 卡片设置密码。保存后会写入 ~/.dsh/.credentials.yaml,并实时生效。
  2. 使用环境变量 DSH_GATE_PASSWORD 设置密码。该来源优先于文件层,重启 DSH 后生效。

已核实的密码来源优先级为:

config.password > DSH_GATE_PASSWORD > ~/.dsh/.credentials.yaml > .env

如果 npm 国内镜像同步存在延迟,导致安装报找不到包,可按文档改用 GitHub 方式安装。

典型用法

登录行为

  • 默认无密码时,远程访问可以直接进行。
  • 配置密码后,非本机直连访问需要密码登录。
  • 登录态保存在内存中,DSH 进程重启后需要重新登录。
  • 登录有效期默认为 7 天,可通过 tokenTtlMs 调整。

可选配置

可选配置项集中在 auth-gate,包括 passwordtrustedRemotePrefixestokenTtlMs。示例如下:

- id: auth-gate
  config:
    # password: 'xxx'
    trustedRemotePrefixes: ['10.144.144.0/24']
    tokenTtlMs: 604800000

其中 trustedRemotePrefixes 可用于内网网段免密,tokenTtlMs 用于设置登录有效期;password 可作为配置层密码来源。

适用场景

  • 通过 nginx 公网域名访问 DSH Web。
  • 通过局域网 IP 访问 DSH。
  • 需要替代 dsh-lan-access0.0.0.0 绑定与 crypto.randomUUID polyfill。
  • 本机添加工作区时希望使用原生目录对话框。

注意事项

  • 插件以当前 DSH 进程权限运行,安装前建议先检查源码与许可证。
  • 默认无密码时,远程访问等价于本机操作权限。公网暴露前建议配置强密码,并建议在 nginx 层加 IP 白名单 / Basic Auth。
  • 建议配合 nginx HTTPS 使用,防止密码与 Cookie 明文传输。
  • 登录接口没有失败次数限制,这是已知边界,可参考 NOTES §5。
  • package.json 声明 engines.node>=22
  • v0.6.0 起要求 DSH 0.1.0-rc.7+;如果 DSH 是 rc.6,请使用 v0.5.0。
  • 登录态在内存中,DSH 进程重启后需要重新登录。

卸载

dsh plugin --profile web remove dsh-access-gate

卸载后,相关副作用通过 ctx.effect 清理回调还原;插件声称不修改 DSH 源码、不写入用户配置文件。

链接

  • GitHub:https://github.com/bamboostrip/dsh-access-gate
  • 目录页:https://www.skillhub.cn/plugins/bamboostrip/dsh-access-gate(该 URL 来自插件线索,未在本次抓取资料中直接出现)
羽毛球分组比赛记分
小程序二维码

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

Xiaoye