前言¶
在本地部署 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。