前言¶
DSH 的理念是「一切皆插件」,Web 端能力也可以通過插件接入。dsh-plugin-qr-connect 是一個 DSH Web 插件:它在側邊欄 Settings 按鈕上方添加一個 QR-code 按鈕,點擊後展示本地網絡和公共互聯網兩個二維碼,並通過一個認證反向代理讓掃描設備打開 DSH Web UI。
它解決的問題比較具體:當手機端或其他設備需要訪問運行在本地的 DSH Web UI 時,可以用掃碼方式進入,而不需要直接在網絡上暴露無鑑權端口。下面介紹它的功能、安裝方式和注意事項。
這是什麼¶
dsh-plugin-qr-connect 是 mervyn-teo 維護的 DSH Web 插件,許可證爲 MIT。
它作爲持久 bundle 插件包含 host half 與 browser half,並在每次啓動時加載。運行後會啓動一個認證反向代理子進程,驗證 auth secret、發放 session cookie,並轉發到 loopback Web UI;WebSocket 升級也被支持,因此手機端可以看到 live updates。
核心功能¶
下面列出插件提供的能力:
- 在側邊欄
Settings按鈕上方添加id爲qr-connect的全寬 QR-code 按鈕。 - 打開一個包含本地網絡和公共互聯網兩個二維碼的面板,鏈接中包含 auth secret。
- 運行認證反向代理子進程,驗證 secret、發放會話 cookie,並轉發到 loopback Web UI。
- 支持 secret 自動輪換和 QR 刷新,默認 30 秒;配置爲
0可禁用自動刷新。 - 點擊二維碼可複製鏈接,公共 QR 帶有 info tooltip。
- 在
Settings → Plugins下提供 QR connect 卡片,用於配置代理端口、會話長度和刷新間隔。 - 通過 DSH locale service 提供英文和中文 UI。
安裝與啓用¶
先安裝插件:
dsh plugin --profile web add github:mervyn-teo/dsh-plugin-qr-connect
安裝後重啓 dsh web,因爲 host bundles 在啓動時加載。
dsh web
典型用法¶
安裝並重啓後,可以從界面或配置文件調整行爲。
1、從 Settings → Plugins 的 QR connect 卡片調整:
port
sessionDays
refreshSeconds
2、也可以修改 cordis.patch.yml 後重啓:
cordis.patch.yml
可修改的配置項包括:
port
sessionDays
refreshSeconds
publicHost
publicHost 可填 host、host:port 或完整 https:// origin;留空則自動檢測。
使用前需要確認網絡可達性:
- 掃描設備必須能訪問代理端口。
- 使用公共 QR 時,還需要 internet reachability,可能需要端口轉發。
- 公共 IP 查找需要 DSH 主機可訪問
https://api.ipify.org。
適用場景與注意¶
這個插件適合作爲可信網絡內的便利工具,不適合當作加固的遠程訪問層。
需要特別注意:反向代理會向可達該端口的任何人暴露完整 agent shell,僅由 30 秒 secret 和 session cookie 保護。因此建議使用較短會話時長,並只在你信任的網絡中使用。
運行要求:
- DSH 需要掛載
subprocess、fs、webServer服務。 Settings → Plugins卡片需要settings服務;如果沒有該服務,卡片會隱藏,並且編輯僅運行時有效。- host half 支持 Windows、macOS 和 Linux。
安裝前,建議檢查源碼和許可證;該插件以當前 dsh 進程權限運行。許可證爲 MIT。
相關鏈接¶
- 社區目錄頁:https://www.skillhub.cn/plugins/mervyn-teo/dsh-plugin-qr-connect
- GitHub:https://github.com/mervyn-teo/dsh-plugin-qr-connect
社區目錄頁是獨立站點,與 DeepSeek / 幻方無官方從屬關係,不要把它理解爲官方應用商店。