前言¶
在本地部署 DeepSeek Harness (DSH) 时,通常需要直接暴露 Web 端口。为了在不修改 DSH 核心配置或引入外部反向代理(如 Nginx)的情况下增加一层访问控制,可以在 DSH Web 进程内集成一个插件。dsh-web-pass 插件正是为此设计,它以零依赖的方式运行在 DSH Web 进程内,提供 Cookie 认证、多密码分流及访问日志查看功能。
插件介绍¶
dsh-web-pass 是一个由维护者 linz919 开发的 admin-security 类插件。它是一个零依赖的 Web 密码门,原生集成了设置页面,支持通过 Cookie 进行会话认证,并具备强制设密、登录失败锁定及多密码多上游分流能力。
核心功能¶
插件主要包含以下功能:
* Cookie 会话认证:基于 Cookie 的认证机制,非 Nginx Basic Auth。
* 强制设密:首次访问必须设置密码(需满足复杂度要求)。
* 真锁定机制:登录失败达到上限后进入锁定状态(默认 60s 基准),支持指数退避(最大 16 倍),成功登录不清零失败计数。
* 滑动会话:会话有效期为 2 天,每日使用自动续期。
* 多密码多上游:支持“访客模式”,一个密码对应一个后端服务,实现多入口分流。
* 自动代持认证:自动代持 DSH 内置认证,用户无需再处理 DSH 的 Token/Cookie。
* 访问日志:内置访问日志查看器,记录密码验证相关请求。
* 零依赖:无外部依赖,原生集成设置页。
* 原生设置页:提供原生集成的设置界面。
安装与启用¶
使用官方命令安装插件:
dsh plugin --profile web add dsh-web-pass
安装后重启 DSH Web 服务即可生效。
典型用法¶
- 访问入口:浏览器通过 TLS 或反向代理访问插件监听端口(默认 3081),内部转发至 DSH 或其他本地服务。
- 配置后端:登录后进入设置页,直接添加上游(标签 + host:port),即时生效。
- 多入口分流:配置多个后端条目,每个条目设置独立密码。登录时输入对应密码,即可进入不同的后端服务(如主人 DSH 或访客干净 DSH)。
数据与配置¶
- 数据存储:所有数据存储在
$DSH_HOME/dsh-web-pass/目录下,包括密码哈希、会话和日志。 - 会话处理:插件生成的会话 Cookie (
dws_session) 不会转发给上游,上游也无法通过响应头写入该 Cookie。 - 登出限制:登出接口仅支持 POST 请求,防止 CSRF 攻击。
- 首次访问:必须强制设置密码,否则无法进入。
注意事项¶
- 上游回包过滤:上游回包中的
dws_session会被自动过滤,防止插件 Cookie 泄露。 - 一致性:升级插件或调整配置后,建议重新登录以刷新会话。
结语¶
dsh-web-pass 提供了一种轻量级的方案来为本地 DSH 服务增加访问控制与多入口管理能力。更多细节与源码,请参考 GitHub。