dsh-remote-tunnel:把遠端 dsh web 接入本地 SSH 隧道

前言

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。
  • 生命週期管理:提供 statuslistlogsauditopenconfig 等命令。
  • 主機診斷與準備:支持 check <host> 做 readiness diagnostics,也支持 provision <host> 做遠端側準備。
  • 主機發現:自動發現 ~/.ssh/config 中的 Host aliases。
  • 會話位置:sessions 和 files 保存在服務器側,本地只保留隧道。

安裝與啓用

本地需要 Node >= 22.19,並建議使用 passwordless ssh key 登錄。遠端服務器需要 Linux、Node >= 22.19dshsystemd

先安裝到 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜