Linjiangxian0203/dsh-remote-tunnel

Remote host tunnel manager: runs dsh web on a remote Linux server (systemd supervision, no root needed) behind an auto-reconnecting SSH tunnel; allocates and registers remote ports on the server, multi-user safe, with an audit view.

Remote Host Tunnel Manager: automates the 'local browser → dsh web on a remote Linux server' link. Each user gets a dedicated remote port (double-checked via real occupancy + registry before allocation, safe under concurrency), allocations recorded in a server registry (/etc/dsh-ports.tsv with per-user fallback), auto-reconnecting SSH tunnel with backoff respawn, heartbeat-fresh registry, local port shifting when occupied, and CLI lifecycle: hosts / hosts add / check (readiness diagnostics) / up --open / down / logs / audit. Sessions and files live on the server; the local machine only keeps a tunnel.

Development & Runtime ★ 5 updated 2026-08-20
View on GitHub ↗

Install

dsh plugin --profile remote add dsh-remote-tunnel

npm package dsh-remote-tunnel 0.1.1 (registry-verified 2026-08-26). dsh plugin --profile remote add dsh-remote-tunnel (dedicated CLI profile) and optionally dsh plugin --profile web add dsh-remote-tunnel to get Settings → Plugins + /remote slash commands (restart dsh web). Remote server needs Node ≥ 22.19, dsh, systemd, key-based ssh login — one command initializes it: ssh <host> 'sh -s' < scripts/bootstrap-remote.sh. All config in $DSH_HOME/remote-tunnel/config.yaml.

Compatibility

DeepSeek Harness remote profile (local: Windows/macOS/Linux with built-in OpenSSH; remote: Linux + Node ≥ 22.19 + dsh + systemd).

Details

Recent updates

v0.1.1: remote port allocation registry; systemd supervision; resilient SSH tunnel; local URL output; hosts/check/up/down/logs/audit CLI.

FAQ

What runs on the remote server?
A dsh web instance plus systemd units and a port registry; the one-line bootstrap (ssh <host> 'sh -s' < scripts/bootstrap-remote.sh) installs everything. No root needed — user-level systemd is enough.
How are ports allocated safely?
Each user gets a dedicated port from the 3080–3119 range, double-checked on the server (real occupancy + registry) before allocation; audit compares the registry against real occupancy at any time.
What happens when the network drops?
The tunnel auto-reconnects with backoff respawn, and heartbeats keep the registry fresh; occupied local ports shift automatically with the occupying process reported.

Alternatives

Blank-not-black/dsh-Remote · flymysql/dsh-remote · juanwang-buaa/dsh-full-remote

More plugins in Development & Runtime

Browse more in Development & Runtime

Guides for Development & Runtime plugins