DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

@linxin666/dsh-ssh

Ssh

dsh Web GUI 的远程 SSH 操作:主机配置存储(~/.dsh/dsh-ssh.json,可从 ~/.ssh/config 导入)、支持跳板主机的持久化 ssh2 连接池、exec / PTY Web 终端 / SFTP 传输 / 本地端口转发隧道 / 集群执行

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add @linxin666/dsh-ssh@0.4.14
README兼容性版本

兼容性与来源证明

Ssh 以 @linxin666/dsh-ssh 发布,当前版本为 0.4.14。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/11/4

版本

0.4.14stable
2026/11/2
0.4.13stable
2026/10/31
0.4.12stable
2026/10/29
查看其余 62 个版本收起版本
0.4.11stable
2026/10/27
0.4.10stable
2026/10/26
0.4.9stable
2026/10/26
0.4.8stable
2026/10/20
0.4.7stable
2026/10/17
0.4.6stable
2026/10/10
0.4.5stable
2026/10/5
0.4.4stable
2026/9/29
0.4.3stable
2026/9/26
0.4.2stable
2026/9/24
0.4.1stable
2026/9/23
0.4.0stable
2026/9/23
0.3.24stable
2026/9/20
0.3.23stable
2026/9/16
0.3.22stable
2026/9/13
0.3.21stable
2026/9/12
0.3.20stable
2026/9/10
0.3.19stable
2026/9/9

相关插件

正在加载相关插件…

最新版
0.4.14
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
2.6 MB
文件数
84
Surface
web
许可证
Apache-2.0
发布源
npm
GitHub
★ 10.1k
周下载
30,971
安全扫描
✓ v0.4.14 扫描通过
最近提交
2026/11/4
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题
0.3.18stable
2026/9/8
0.3.17stable
2026/9/7
0.3.16stable
2026/9/5
0.3.15stable
2026/9/5
0.3.14stable
2026/9/3
0.3.13stable
2026/9/3
0.3.12stable
2026/9/2
0.3.11stable
2026/9/1
0.3.10stable
2026/8/31
0.3.9stable
2026/8/30
0.3.6stable
2026/8/27
0.3.5stable
2026/8/26
0.3.4stable
2026/8/25
0.3.3stable
2026/8/24
0.3.2stable
2026/8/23
0.3.1stable
2026/8/23
0.3.0stable
2026/8/23
0.2.9stable
2026/8/22
0.2.8stable
2026/8/22
0.2.7stable
2026/8/21
0.2.6stable
2026/8/21
0.2.5stable
2026/8/20
0.2.4stable
2026/8/19
0.2.3stable
2026/8/19
0.2.2stable
2026/8/19
0.2.1stable
2026/8/18
0.2.0stable
2026/8/18
0.1.20stable
2026/8/17
0.1.19stable
2026/8/16
0.1.18stable
2026/8/16
0.1.17stable
2026/8/16
0.1.16stable
2026/8/15
0.1.15stable
2026/8/15
0.1.14stable
2026/8/15
0.1.13stable
2026/8/15
0.1.12stable
2026/8/14
0.1.11stable
2026/8/14
0.1.10stable
2026/8/14
0.1.9stable
2026/8/14
0.1.8stable
2026/8/14
0.1.7stable
2026/8/14
0.1.6stable
2026/8/14
0.1.3stable
2026/8/13
0.1.2stable
2026/8/13

相关插件

继续浏览 developer-tools 分类下经过校验的插件。

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Sdk Minimal@deepseek-ai/dsh-sdk-minimal独立的最小 SDK 配置包:JSON-RPC、一个 DeepSeek 适配器、持久化 Shell 和 JSONL 会话Sdk App@deepseek-ai/dsh-sdk-appdsh SDK 配置包:基于 dsh-base 提供 stdio JSON-RPC 服务和进程生命周期管理Experimental Inspector Profile@deepseek-ai/dsh-experimental-inspector-profile用于原始 Session 日志和 Chat 节点检查的可选 Web 捆绑包

README

dsh-ssh · Web SSH Terminal, SFTP Transfer & Remote Operations for DeepSeek Harness (DSH)

English | 中文

   

Remote Linux Server Operations & Web SSH Suite for DeepSeek Harness (DSH)
xterm.js Web Terminal · Visual SFTP Transfer · Port Forwarding Tunnels · Cluster Execution · 6 Agent Tools

A dedicated remote Linux server operations and cluster management plugin for DeepSeek Harness (DSH) Web GUI and official desktop client: in-process persistent connection pool, Web GUI host inventory management, xterm.js terminal, visual SFTP file transfer, port forwarding tunnels, and 6 dedicated agent tools implemented on top of official NPM SDKs without modifying DSH core source code.

Capabilities

CapabilityDescription
Host managementCRUD, search, connection test; collapsible grouping by environment / tags with per-group batch test; config stored in ~/.dsh/dsh-ssh.json; supports key / password / ssh-agent auth (OpenSSH agent, with Pageant still selectable on Windows), passphrase keys, ProxyJump jump hosts (multi-level) and OpenSSH ProxyCommand transports (bastion clients)
Config importOne-click parse of a standard ~/.ssh/config (Host/HostName/User/Port/IdentityFile/IdentityAgent/ForwardAgent/ProxyJump/ProxyCommand, Include files, blocks without HostName); `ForwardAgent yes
Persistent connection poolReuses a long-lived connection per host (opposite of the ssh-skill daemon), automatically disconnects after 30 minutes idle, auto-reconnects on disconnect (up to 3 times)
Agent forwardingOpt-in per host through the forwardAgent flag (ssh -A); the form has an "Enable agent forwarding" checkbox, the host list shows an agent-forwarding badge for enabled hosts, and ssh_list reports forwardAgent with a forward column in its table. The endpoint is the host's configured agent path, otherwise SSH_AUTH_SOCK, otherwise the native OpenSSH named pipe (\\.\pipe\openssh-ssh-agent) on Windows; a host with no local endpoint fails with an explicit error instead of connecting without forwarding. A server that refuses the request (AllowAgentForwarding no) surfaces its own error and is never downgraded to a silent non-forwarded session. The flag never touches the stored profile when it is off
Command executionexec with a timeout (default 60s), stdout/stderr separated, output truncation guard (2MB)
Web terminalxterm.js + WebSocket PTY terminal, auto-sizing, real-time output; the panel holds several terminal tabs, each with its own host PTY — switch, close one at a time, run several tabs against the same host, and the "+" control opens another tab on the host the toolbar shows
File transferSFTP upload (browser file picker, NDJSON progress stream), download (progress bar + browser save); remote directory browsing
Port forwardingLocal port-forward tunnel (listens on 127.0.0.1 only) to reach a remote database / intranet service; list / stop supported
Cluster executionOne command run concurrently across many hosts (filter by alias / environment / tag, default concurrency 8)
Agent toolsssh_list / ssh_exec / ssh_upload / ssh_download / ssh_tunnel / ssh_cluster; GUI and Agent share the same host config

The panel loads its contents on first open. Closing and reopening it preserves the selected tab, form drafts and every terminal tab. A terminal tab that is not on screen keeps its remote shell in the Host: the view detaches, and returning to the tab reattaches by session id and replays the host's scrollback into the single xterm. A remote shell that exits keeps its tab and its last screen instead of vanishing, and a tab closed in the background is only removed once the Host confirms the close — a close that cannot be delivered keeps the tab and says so. The tunnel list refreshes every five seconds while its tab, panel and browser page are visible; automatic reads pause when hidden, resume immediately on return, and do not overlap slow reads. Port forwarding itself continues in the Host.

Security model

  • All /api/dsh-ssh/* routes are loopback-only (with same-origin checks) — the interfaces that execute commands against remote servers are not exposed to the LAN.
  • Passwords / key passphrases are stored in plain text in ~/.dsh/dsh-ssh.json, file mode 0600, directory 0700 (the same trust model as ssh-skill writing passwords into ssh-config comments).
  • ssh-agent auth stores only the agent socket path (or the special value pageant); it never reads or stores private-key material. An empty agent path is not a secret and is always saved: it means auto-detect (SSH_AUTH_SOCK, then the native OpenSSH named pipe on Windows), so switching a host to SSH Agent takes effect even with the field left blank.
  • Agent forwarding is opt-in per host and off by default. With forwardAgent enabled, every exec and PTY session on that host asks the server for auth-agent-req@openssh.com, which means the remote host can authenticate as this machine with your local keys. Enable it only for hosts you trust, and remember every session on such a host can use the forwarded agent. When no agent endpoint resolves (the configured agent path, SSH_AUTH_SOCK, the native OpenSSH named pipe on Windows) the connection fails instead of forwarding nothing, and a server that refuses the request surfaces its error exactly as it comes back.
  • Tunnels only listen on 127.0.0.1.
  • Deleting a host or changing its connection fields (host / port / user / auth / proxyJump / proxyCommand / forwardAgent) immediately closes that alias's pooled connection and tunnels; later operations reconnect with the new configuration and never reuse a connection authenticated with the old credentials.
  • When the SSH connection behind a tunnel drops, the tunnel retires itself: the local port stops accepting, the tunnel leaves the list, and the connection that arrives during the drop is closed without traffic instead of interrupting the host process.
  • A proxyCommand value is a shell command executed by the DSH host process with its privileges — exactly the trust ssh(1) gives the same line in ~/.ssh/config. It can only come from the user's own 0600 store file: the Agent cannot create or edit hosts, and ssh_list reports only whether a host has one, never the command text.
  • Before the Agent uses a tool, the host must first be configured in the GUI (or imported from ~/.ssh/config).
  • ssh_upload / ssh_download read/write arbitrary local paths on this machine with host-process privileges (not through the bash sandbox) — same host-local-path semantics as ssh-skill, be aware of that permission surface.
  • Agent transfer tools move files only between this machine and a remote SSH host; local-file reads and writes must use the local file tools (read / write / edit / bash), never the tools.

Install

Install the family aggregate package @linxin666/dsh-web-all (all plugins and skins in one) or this plugin alone:

### From npm (recommended)
dsh plugin --profile web add @linxin666/dsh-ssh@latest

### From the repository (development)
git clone https://github.com/zhu1090093659/dsh-web.git
cd dsh-web
pnpm install && pnpm -r build
dsh plugin --profile web add link:$(pwd)/packages/dsh-ssh

After installing, restart dsh web: a "SSH" entry appears in the sidebar; the plugin description is injected into the Agent prompt automatically.

Configuration

The settings panel (plugin config) toggles announceToAgent (whether to announce the plugin to the Agent; off by default so system prompts stay clean) and enabled (master switch), sets terminalFontFamily (the web terminal font; empty defers to the CSS chain: --dsh-ssh-terminal-font → the official --ds-font-family-code token → the built-in monospace stack), and sets connectTimeoutMs (the shared ceiling for TCP connect, SSH key exchange and user authentication, default 30000 ms, allowed 1000-600000). Raise connectTimeoutMs on hosts whose authentication is slow (for example PAM or LDAP behind a distant directory service): every connection entry point — ssh_exec, the web terminal, SFTP transfers, tunnels and cluster runs — reads it, while the timeoutMs argument of ssh_exec / ssh_cluster only bounds the remote command once the connection is ready. The terminal font is fixed in the xterm constructor, so a plain stylesheet cannot override it; to render powerline / Nerd Font glyphs, enter a Nerd Font stack here (e.g. "SauceCodePro Nerd Font", monospace). Changes re-apply to open terminals live, no reconnect needed; a new connectTimeoutMs applies to connections opened afterwards, and pooled connections are unaffected until they reconnect.

Data

  • Host config: ~/.dsh/dsh-ssh.json (versioned JSON, atomic write)
  • Transfer staging: os.tmpdir()/dsh-ssh-uploads/ (0700 directory, 0600 in-flight files)

Development

pnpm install --filter @linxin666/dsh-ssh...
pnpm --filter @linxin666/dsh-ssh test    # unit tests: store + engine (embedded ssh2 Server + real sshd)
pnpm --filter @linxin666/dsh-ssh build   # tsc types + tsdown dual-half artifacts

Known limitations

  • The remote target path of an upload must be an absolute path (relative paths are rejected).
  • Download does not support a whole directory yet (download files individually); upload supports recursive directories (walks the local directory and transfers file by file).
  • exec auto-reconnect on disconnect (up to 3 times) may re-execute non-idempotent commands — watch out for side effects on long commands.
  • A ProxyJump hop is either a host alias configured in this plugin or an OpenSSH [user@]host[:port] address; an address hop has no stored credentials, so it reuses the target host's authentication (configure a host entry when the hop needs its own).
  • proxyCommand and proxyJump cannot be combined on one host (OpenSSH resolves them by "whichever appears first in the config"; a stored entry has no order, so the plugin rejects the pair), and only the first hop of a chain may declare a ProxyCommand.
  • A ProxyCommand is executed through the user's shell, so it inherits the DSH process's PATH and environment. On Windows the shell is killed without its process group, so a client it spawned may outlive the transport.
  • The ssh_config import expands Include (globs, ~, several pathnames, relative to the config directory) but not environment variables or % tokens, and a multi-pattern Host a b line still imports only its first pattern.
  • Resume (broken-transfer continuation) is not implemented yet.
  • The transfer of Agent tools is a host-machine local path (same semantics as ssh-skill).

Telemetry

The browser half sends one anonymous install heartbeat per UTC day to dsh-market.com: a random localStorage id plus this package's name, nothing else. The server stores only a salted hash of that id, never IP addresses, and exposes aggregate counts only. See docs/telemetry.md for the full contract.

ssh_*
  • The remote output of exec / cluster is returned verbatim (not sanitized); a command like env may bring secrets from the remote environment back into the conversation log.