前言¶
DeepSeek Harness (DSH) 的 Web 界面在生產環境中需要額外的安全防護。現有的登錄門方案往往較爲複雜或依賴繁重。dsh-simple-auth 提供了一個直接的替代方案:通過共享密鑰或主/訪客密鑰進行訪問控制,並支持基於 ACL 的會話隔離與分享。
插件簡介¶
dsh-simple-auth 是由 lt9 維護的一個 DeepSeek Harness Web 插件。它是一個超輕量登錄網關,核心設計理念是零生產依賴。
該插件提供單登錄字段,支持可選的“主密鑰”或“訪客密鑰”。默認情況下,會話是隔離的;只有“所有者”可以分享或取消分享會話。側邊欄列表經過 ACL 過濾,右下角提供一個浮動操作按鈕 (FAB) 專門用於分享當前選中的會話。
安裝與啓用¶
使用 DSH 的插件管理器添加該插件:
dsh plugin --profile web add github:lt9/dsh-simple-auth
如果當前 profile 是 pnpm workspace,且添加時遇到 ERR_PNPM_ADDING_TO_ROOT 錯誤,請使用 -w 參數:
dsh plugin --profile web add -w github:lt9/dsh-simple-auth
本地檢出安裝:
dsh plugin --profile web add ./dsh-simple-auth
啓用前必須設置密鑰。插件採用“故障關閉”策略:如果密鑰缺失,登錄頁面會提示,且所有其他請求將被拒絕。
export DSH_SIMPLE_AUTH_KEY='a-long-random-secret'
在 systemd 或 Docker 服務中,請將同樣的變量放入 Environment 或 EnvironmentFile。如果需要複用已有的環境變量,可在配置中指定 keyEnv:
# $DSH_HOME/cordis.patch.yml
- id: dsh-simple-auth
config:
keyEnv: EXISTING_SECRET_ENV
重啓 DSH Web 進程後,打開 UI 並輸入密鑰即可。
配置項¶
以下爲已覈實的配置項。所有密鑰均爲可選,默認值由代碼提供。在 cordis.patch.yml 中配置時,home-layer patch 的 config 會完全替換默認配置,不支持深度合併。
| 配置項 | 默認值 | 說明 |
|---|---|---|
keyEnv |
DSH_SIMPLE_AUTH_KEY |
存儲訪問密鑰的環境變量名 |
keyFile |
"" |
如果設置,從該文件讀取密鑰(去除首尾空白),優先級高於 keyEnv |
cookieName |
dsh_simple_auth |
Session Cookie 名稱 |
sessionTtl |
604800 |
Cookie 有效期(秒),默認爲 7 天 |
cookieSecure |
auto |
auto 會跟隨 X-Forwarded-Proto;true 或 false 強制設置 Secure 標誌 |
rewriteLoopback |
true |
將認證後的流量重寫爲 127.0.0.1:<port>,避免 DSH 的反向代理 Host 檢查阻斷特權 API |
title |
DeepSeek Harness |
登錄頁面的標題 |
remember |
true |
顯示“記住密鑰在本設備”選項(僅存儲於 localStorage,服務端仍使用 Cookie) |
rpcMinTimeoutMs |
120000 |
注入到 Web Index 的 AbortSignal.timeout 下限。默認 DSH RPC 爲 30s,大頁面可能中斷,設爲 0 可禁用 |
安全與注意事項¶
- 故障關閉:配置錯誤不會導致界面暴露。如果密鑰缺失或配置錯誤,所有請求將被拒絕。
- 速率限制:針對每個客戶端 IP 進行登錄嘗試的速率限制。
- 會話分享機制:分享會話意味着分享“實時智能體”,而非僅分享聊天文本。這意味着憑證、bash、工作區和設置仍然保持機器級別的共享。
- 非 TLS 替代品:此插件僅做訪問控制,不能替代 TLS 或將智能體視爲遠程代碼執行來處理。請勿在公網明文暴露 DSH。
- 目錄清單:Catalog 中的列出僅用於展示,不是安全審計。