前言¶
DSH 的插件生態強調“一切皆插件”。當 dsh web 需要跑在遠端 Linux 服務器上時,手工做法通常要處理端口分配、registry、systemd 服務、SSH 隧道、斷線重連和端口占用等細節。dsh-remote-tunnel 把這些步驟封裝進 dsh,讓本地只保留一條到遠端的 SSH 隧道。
這是什麼¶
dsh-remote-tunnel 是 DSH 的一個 Remote Host Tunnel Manager 插件,維護者爲 Linjiangxian0203。它面向“本地瀏覽器 → 遠端 Linux 服務器上的 dsh web”鏈路,覆蓋遠端端口分配與 registry、systemd 監管、resilient SSH tunneling、本地 URL 輸出和生命週期管理。
截至 2026-08-30,package.json 中的版本爲 0.1.4,許可證爲 MIT。
核心功能¶
下面介紹已覈實的能力。
- 遠端端口分配:每個用戶自動獲得獨立遠端端口,分配前在服務器側複覈佔用情況。
- registry 記錄:每次分配都會寫入服務器側 registry;默認路徑爲
/etc/dsh-ports.tsv,權限受限時使用 per-user fallback。 - systemd supervision:遠端服務由 systemd 監管;用戶級 systemd 即可,不需要 root;具備 passwordless sudo 時可使用系統 unit。
- resilient SSH tunneling:隧道在斷網後自動重連,並用 heartbeat 保持 registry 狀態新鮮。
- 本地端口處理:本地端口被佔用時自動移位,並報告佔用進程。
- 本地 URL 輸出:隧道建立後給出本地可訪問的 URL。
- 生命週期管理:提供
status、list、logs、audit、open、config等命令。 - 主機診斷與準備:支持
check <host>做 readiness diagnostics,也支持provision <host>做遠端側準備。 - 主機發現:自動發現
~/.ssh/config中的 Host aliases。 - 會話位置:sessions 和 files 保存在服務器側,本地只保留隧道。
安裝與啓用¶
本地需要 Node >= 22.19,並建議使用 passwordless ssh key 登錄。遠端服務器需要 Linux、Node >= 22.19、dsh 和 systemd。
先安裝到 remote profile:
dsh plugin --profile remote add dsh-remote-tunnel
如果還需要在 web 端看到插件,繼續安裝到 web profile:
dsh plugin --profile web add dsh-remote-tunnel
安裝到 web profile 後,插件會出現在 Settings → Plugins,並啓用 chat 中的 /remote slash commands;之後重啓一次 dsh web。
典型用法¶
下面是從發現主機到啓動隧道的順序。
1、查看主機。~/.ssh/config 中的 Host aliases 會被自動發現。
dsh --profile remote hosts
2、手動添加主機別名。--workspace 指定遠端 dsh web 的 workspace 目錄。
dsh --profile remote hosts add lab --host 192.0.2.10 --user alice --workspace /home/alice/project
3、做首次診斷。check 用於 readiness diagnostics,便於定位缺失項。
dsh --profile remote check lab
4、初始化遠端環境。這裏的 <host> 替換爲目標主機。
ssh <host> 'sh -s' < scripts/bootstrap-remote.sh
5、啓動隧道並打開本地 URL。
dsh --profile remote up lab --open
6、日常查看與維護。
dsh --profile remote status lab
dsh --profile remote logs lab
dsh --profile remote audit lab
dsh --profile remote down lab
適用場景與注意¶
適合把 dsh web 放在遠端 Linux 服務器上,本地只維護一條 SSH 隧道的場景。遠端會話和文件位於服務器側,本地端口和隧道狀態由插件管理。
使用前注意:
- 插件和隧道不會接觸憑據;API key 在遠端 dsh web 的
Settings → Models中配置。 systemd用戶級就夠,不需要 root;如果要使用系統 unit,通常需要具備 passwordless sudo。- registry 默認是
/etc/dsh-ports.tsv,實際使用服務器路徑還是 per-user fallback,取決於權限。 - 如果終端被強行關閉,沒有經過
Ctrl+C退出,遠端服務會繼續運行,registry 行保持 in-use;下一次up會清理過期本地狀態,並複用同一個已註冊端口。 dsh-remote-tunnel以當前 dsh 進程權限運行。安裝前應檢查源碼和MIT許可證,確認依賴與運行方式符合本機要求。- DSH 的“一切皆插件”是社區插件生態的理念;插件目錄是獨立站點,與 DeepSeek / 幻方沒有官方從屬關係,不應視作官方應用商店。
鏈接¶
- 插件目錄:https://www.skillhub.cn/plugins/Linjiangxian0203/dsh-remote-tunnel
- GitHub:https://github.com/Linjiangxian0203/dsh-remote-tunnel