dsh-remote-gateway:让 DeepSeek Harness 远程访问的安全反向代理

前言

DeepSeek Harness (DSH) 默认仅监听本地回环地址,这使得开发者无法直接从其他设备访问。直接暴露 DSH 的 Web 端口存在安全风险。dsh-remote-gateway 插件提供了一个安全的反向代理方案:DSH 进程本身始终只监听 127.0.0.1,由网关负责接收远程请求并进行认证转发。

插件简介

该插件由 RyensX 维护,旨在解决 DSH 的远程访问需求。它通过网关模式,将外部请求安全地转发到本地,并支持认证、IP 白名单、HTTPS 配置等功能。

核心功能

  • 安全转发:DSH 本身始终只监听 127.0.0.1,由插件提供的网关进行转发。
  • 认证机制:支持密码认证和 IP 白名单。来源 IP 只读取 TCP socket,不信任代理请求头。
  • 实时配置:设置页的所有配置(如监听地址、端口、白名单、密码)在点击“保存”后实时生效,无需重启 DSH。
  • HTTPS 支持:支持使用宿主机上的 PEM 文件配置 HTTPS 证书。
  • 交互优化:通过网关地址添加工作区时,会在当前浏览器内打开宿主机文件夹选择器,而非在远程主机弹窗。

安装与启用

使用官方命令安装插件:

dsh plugin --profile web add github:RyensX/dsh-remote-gateway

安装后,在 DSH 的设置页中找到该插件配置。首次使用时,必须通过本地 127.0.0.1 访问设置页并配置密码。

典型用法

基础访问流程

浏览器通过网关访问本地 DSH 的流程如下:

浏览器
  → dsh-remote-gateway(白名单 + 密码认证)
  → http://127.0.0.1:<DSH Web 端口>

局域网访问配置

如果需要在局域网内访问,需在网关配置中将“监听地址”从默认的 127.0.0.1 改为 0.0.0.0 或指定的网卡地址。

HTTPS 配置

HTTPS 使用宿主机上的 PEM 文件,配置方式如下:

dsh-remote-gateway:
  tls:
    enabled: true
    certPath: /absolute/path/to/cert.pem
    keyPath: /absolute/path/to/key.pem

注意事项:
* 证书和私钥路径必须是绝对路径,且文件大小不超过 1 MiB。
* 仅覆盖同一路径下的证书文件不会触发自动加载,需重启 DSH。
* 证书读取失败时不会降级到 HTTP,原监听器继续服务。

IP 白名单与 Host 控制

  • IP 白名单:建议在需要特定设备访问时开启。支持精确 IPv4、IPv6 和 CIDR 格式。留空表示不限制来源 IP。命中白名单后仍需输入密码。
  • Host 白名单:网关默认只接受本机 IP 和 localhost。如需使用局域网域名或 NAT 后的外部 IP,必须在“额外允许的 Host”中显式添加精确域名或 IP(不包含协议和端口)。

适用场景与注意事项

适用场景

  • 需要在多台设备间同步使用 DSH 的开发者。
  • 在局域网内搭建 AI 开发环境的场景。
  • 需要通过 VPN 或内网穿透工具(如 Tailscale、ZeroTier、Cloudflare Tunnel)访问本地服务的场景。

注意事项

  • 远程工具依赖:插件本身不直接提供远程访问服务,必须搭配 Tailscale、ZeroTier 等工具使用。
  • 安全建议:HTTP 模式仅适合临时使用的可信局域网,长期使用或监听非回环地址应配置 HTTPS,并设置 IP 白名单和主机防火墙规则。
  • 会话管理:会话按令牌独立滑动过期(默认 180 分钟),最长绝对生命周期为 7 天。服务端推送和心跳不会续期。
  • 系统编辑器:通过网关打开配置文件时,会调用 DSH 原有的系统文本编辑器。

结语

dsh-remote-gateway 通过网关模式解决了 DSH 本地运行带来的远程访问痛点,同时保持了安全性。对于需要在多终端或远程环境使用 DeepSeek Harness 的用户,这是一个可靠的解决方案。

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

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

小夜