🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

远程访问网关 clarknu/dsh-gateway

DeepSeek 客户端v1.7.0
clarknu51 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

为 Web 界面加上 HTTPS 加密与登录保护,远程也能安全访问

37.8/100
综合分
6
GitHub 星标
260
npm 周下载
—/5
用户评分

数据截至 2026/9/19 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/clarknu/dsh-gateway.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
生态插件
可安装,未声明 dsh 能力
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
数据截至 2026/11/01·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 51 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-gateway @ 1.7.0
✓Node 引擎要求 >=22.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/1 00:48:20

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 24 处,展示前 24 条)
  • 读取本地文件
    dsh/index.js:44
    const version = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8')).version
  • 读取本地文件
    dsh/index.js:54
    if (existsSync(statePath)) {
  • 读取本地文件
    dsh/index.js:56
    const state = JSON.parse(readFileSync(statePath, 'utf8'))
  • 写入本地文件
    dsh/index.js:63
    mkdirSync(dataDir, { recursive: true })
  • 写入本地文件
    dsh/index.js:64
    writeFileSync(statePath, JSON.stringify({ hmacSecret: secret }, null, 2), { encoding: 'utf8', mode: 0o600 })
  • 写入本地文件
    dsh/index.js:78
    mkdirSync(dataDir, { recursive: true })
  • 写入本地文件
    dsh/index.js:79
    writeFileSync(join(dataDir, 'state.json'), JSON.stringify({ hmacSecret: secret }, null, 2), { encoding: 'utf8', mode: 0o600 })
  • 写入本地文件
    dsh/index.js:116
    writeFileSync(logFilePath, `${JSON.stringify(line)}\n`, { encoding: 'utf8', flag: 'a' })
  • 读取本地文件
    dsh/index.js:117
    if (statSync(logFilePath).size > 512 * 1024) {
  • 读取本地文件
    dsh/index.js:118
    const tail = readFileSync(logFilePath, 'utf8').split('\n').slice(-200).join('\n')
  • 写入本地文件
    dsh/index.js:119
    writeFileSync(logFilePath, tail, { encoding: 'utf8' })
  • 发起网络请求
    client.js:140
    return fetch('/gateway/panel', {
  • 发起网络请求
    client.js:204
    return fetch('/gateway/panel')
  • 发起网络请求
    client.js:241
    fetch('/gateway/panel')
  • 发起网络请求
    client.js:537
    fetch('/gateway/panel')
  • 发起网络请求
    lib/proxy.js:77
    const upstreamReq = http.request(
  • 读取本地文件
    lib/certs.js:19
    const crt = readFileSync(cert, 'utf8')
  • 读取本地文件
    lib/certs.js:20
    const prv = readFileSync(key, 'utf8')
  • 写入本地文件
    lib/certs.js:28
    mkdirSync(certsDir, { recursive: true })
  • 读取本地文件
    lib/certs.js:31
    if (existsSync(crtPath) && existsSync(keyPath)) {
  • 读取本地文件
    lib/certs.js:33
    cert: readFileSync(crtPath, 'utf8'),
  • 读取本地文件
    lib/certs.js:34
    key: readFileSync(keyPath, 'utf8'),
  • 写入本地文件
    lib/certs.js:57
    writeFileSync(crtPath, pems.cert, 'utf8')
  • 写入本地文件
    lib/certs.js:58
    writeFileSync(keyPath, pems.private, { encoding: 'utf8', mode: 0o600 })
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • HTTPS加密访问
  • 登录保护

为 DeepSeek Harness 网页界面提供自带 HTTPS 的远程访问网关——把 Caddy 层做成 dsh 插件。

README

由 DeepSeek 最新模型翻译生成
dsh-gateway 为 DeepSeek Harness 的 Web 界面加一层「HTTPS 加密 + 账号登录」的远程访问网关:作为 dsh 插件安装,无需任何外部程序,装上即用。 A self-contained HTTPS + login gateway for the DeepSeek Harness web surface. Install it as a dsh plugin — no external programs needed. 它能做什么 - 远程访问 DSH Web 界面:在局域网内的另一台电脑或手机上,打开 https://本机IP:端口 就能访问;配置好端口映射后,从互联网也能访问 - HTTPS 加密:全程加密传输;有域名可用自己的证书,没有域名(IP 直连)会自动生成证书 - 登录保护:访问前必须先登录;账号、密码、会话有效期都可配置,登录失败自动限速;密码不以明文存储 - 会话可一键全部失效:在设置页点一下,所有已登录的设备立即退出,下次访问需重新输入用户名和密码(不再担心旧登录残留) - 多站点:一个网关可同时服务多个域名或 IP - 完整体验:远程访问与本地一致,实时消息等长连接功能正常工作 - 配置热生效:改配置立即生效,无需重启 安装 dsh plugin --profile web add dsh-gateway
展开完整文档(README 剩余 1 节)
dsh-gateway

为 DeepSeek Harness 的 Web 界面加一层「HTTPS 加密 + 账号登录」的远程访问网关:作为 dsh 插件安装,无需任何外部程序,装上即用。

A self-contained HTTPS + login gateway for the DeepSeek Harness web surface. Install it as a dsh plugin — no external programs needed.

它能做什么

- 远程访问 DSH Web 界面:在局域网内的另一台电脑或手机上,打开 https://本机IP:端口 就能访问;配置好端口映射后,从互联网也能访问
- HTTPS 加密:全程加密传输;有域名可用自己的证书,没有域名(IP 直连)会自动生成证书
- 登录保护:访问前必须先登录;账号、密码、会话有效期都可配置,登录失败自动限速;密码不以明文存储
- 会话可一键全部失效:在设置页点一下,所有已登录的设备立即退出,下次访问需重新输入用户名和密码(不再担心旧登录残留)
- 多站点:一个网关可同时服务多个域名或 IP
- 完整体验:远程访问与本地一致,实时消息等长连接功能正常工作
- 配置热生效:改配置立即生效,无需重启

安装

dsh plugin --profile web add dsh-gateway

重启 web 应用后,网关默认只在本机 127.0.0.1:3443 上监听、且没有任何账号——谁都登录不进去(fail-closed,安全优先)。要让别人能访问,按下面的「快速开始」配置账号与监听地址。

快速开始

以“局域网内另一台机器访问”为例:

1. 配置登录账号与监听地址(设置页的 Remote Gateway 卡片,或直接编辑 $DSH_HOME/settings.yaml):

gateway:
listenHost: '0.0.0.0' # 监听所有网卡,允许局域网访问 users: admin: 'scrypt$...' # 用 node scripts/hash-password.mjs '你的密码' 生成

2. 记住网关端口(默认 3443)。
3. 在另一台设备浏览器打开 https://本机IP:3443,首次访问需信任自签证书,然后登录即可使用。

从互联网访问:在路由器上做端口映射,把外部端口转发到本机 gateway.port,用公网 IP(或域名)访问;使用域名时建议配置自己的证书。

注意:示例中的 admin / change-me 只是演示用。只要该凭据仍在生效,网关就拒绝在非本机地址上启动。

配置

所有配置走 $DSH_HOME/settings.yaml 的 gateway: 段,也可以在 DSH 设置页的 Remote Gateway 卡片里直接修改(两者完全等价:同样校验、持久化、热生效)。

gateway:
enabled: true # false = 完全停用 listenHost: '127.0.0.1' # 监听地址:127.0.0.1 = 仅本机;0.0.0.0 = 所有网卡 port: 3443 # 对外端口 upstream: '' # 留空 = 自动跟随 DSH web 服务端口 sessionDays: 30 # 会话有效期(天) loginFailLimit: 5 # 每 IP 连续登录失败次数上限 lockoutSeconds: 60 # 超过上限后的锁定秒数 users: # 登录账号(值为密码哈希,推荐) admin: 'scrypt$...' sites: # 站点列表:只响应这里列出的域名/IP
- hosts: ['你的域名', '你的IP'] cert: '证书路径' # 留空 = 自动生成 key: '密钥路径'

- 默认 users 为空、listenHost 为 127.0.0.1:不配置 = 无人可登录、仅本机可达
- sites[].hosts 支持 .example.com 通配;网关只响应白名单内的域名/IP
- 密码生成哈希:node scripts/hash-password.mjs '你的密码';设置页保存的密码会自动哈希,无需手动生成

设置页配置面板

安装后,DSH 设置页会出现 Remote Gateway 卡片,可完成:

- 查看运行状态(运行中 / 已停用 / 异常 / 重启中,右上角状态点实时反映)
- 启用 / 停用、一键重启——每次操作都有明确反馈(“正在重启… → 重启成功”,失败显示原因)
- 修改绑定 IP 与端口:保存后监听自动重启,并等待就绪后提示结果
- 管理登录账号:新增 / 修改 / 删除(删除有确认),密码自动哈希存储
- 使所有登录会话失效:一键让所有已登录设备退出(有确认),下次访问需重新登录
- 查看最近日志(每 3 秒自动刷新)

证书、多站点、限速等配置仍走 settings.yaml 的 gateway: 段。

衔接条件(使用前确认)

- 局域网访问:本机与访问设备在同一网络;listenHost 为 0.0.0.0;端口未被防火墙拦截
- 互联网访问:路由器已配置端口映射;用域名时,域名需解析到本机并配置证书
- 建议:让 DSH 本体只绑定本机 127.0.0.1,使所有远程访问都经过网关的登录保护(见「安全基线」第 3 条)

安全基线

1. 不要使用示例凭据:users 中不得保留 admin / change-me——非本机监听下网关会拒绝启动(强制门禁,不只是告警)
2. 密码不以明文存储:优先使用密码哈希(设置页保存会自动哈希;手写配置见上面的生成命令)
3. DSH 本体只绑回环:在 web profile 的 cordis.patch.yml 中把 webserver 锁定到 127.0.0.1:
- id: webserver
config:
host: '127.0.0.1'
port: 3080

4. 配置站点白名单:sites[].hosts 只列你实际使用的域名/IP
5. 会话说明:登录令牌在到期前有效(默认 30 天);改密码不会让已登录的设备退出。需要让所有客户端重新登录时,在设置页点「退出所有登录」(轮换签名密钥,立即生效);需要撤销单个用户时,删除该账号即可
6. 端口映射:路由器把外部端口转发到本机 gateway.port

反向代理行为(v1.7.0)

网关默认以 loopback 伪装模式转发请求:上游看到的是 127.0.0.1: 的 Host/Origin,而不是客户端的真实域名。效果:

- DSH 的 API 信任围栏(要求 Host 为回环地址或 --trusted-host 白名单)无需任何启动参数即可放行,包括凭据 / 设置等特权 API——不需要再给 dsh web 传 --trusted-host*
- 上游返回的绝对 Location 头会自动改写回客户端的公开地址(https:///...)
- WebSocket 升级走同一转发逻辑,无需额外配置
- sec-fetch-site: cross-site 的跨站请求仍被上游拒绝,CSRF 防护不受影响
- DSH 进程 token 中继(自动建立会话):远程浏览器登录网关后,若上游对文档请求返回 401(浏览器还没有 DSH 的 dsh-auth- 会话 cookie),网关会用本进程的 DSH 启动 token* 回一次 302 /?token=,让浏览器无感完成 DSH 会话建立——否则远程设备拿不到只存在于 web 进程 stdout / 托盘日志里的进程 token,只能停在 401 页。中继严格限定为 GET + 文档导航 + URL 未带 token 参数,并下发一枚 60 秒标记 cookie dsh_gw_relay:若 token 已过期(web 进程重启过),交换会再次 401,标记 cookie 保证只跳这一次、绝不循环。
非文档请求(fetch/XHR/资源)的 401 一律原样透传。此改动需重启 dsh web 进程后生效。

Windows 托盘启动器(可选)

tools/dsh-tray/ 附带一个 Windows 托盘小工具,用于隐藏命令行窗口并以菜单方式管理 DSH 实例(启动 / 重启 / 停止 / 打开页面等),实例异常退出时会弹气泡通知。

开发

npm install
npm test # node:test 单元测试

- lib/:核心逻辑(认证、代理、证书、HTTPS 服务器),与插件框架无关,可独立测试
- dsh/index.js:插件封装(配置解析、生命周期、热重载、安全守卫)
- client.js:设置页卡片(浏览器端)
- scripts/:配套脚本(hash-password.mjs 生成密码哈希等)

License

MIT
预览分享卡片长什么样 ↓clarknu/dsh-gateway
分享 · DeepSeek Harness Hub
clarknu/dsh-gateway

为 Web 界面加上 HTTPS 加密与登录保护,远程也能安全访问

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部