Skip to main content

How to use dsh-web-ui

Adds SSH host management, command execution, web terminal, SFTP file transfer, local port forwarding, cluster concurrent execution, and 6 Agent tools to the dsh Web GUI. Host configurations are stored centrally on the local machine.

This article is auto-derived from indexed fields (wiki / faq / compatibility_json), not freshly AI-generated.

This article is derived from the plugin's already-indexed fields (wiki / faq / compatibility_json / readme), not freshly generated by AI. Source field is noted at the end of each section.

Quick start

dsh-ssh

— source: plugin_wiki.wiki_content

Install & verify

dsh plugin --profile web add @linxin666/dsh-ssh

Run the command above in your DSH Web Profile. Then enable the plugin in the plugin list.

— source: plugins.install

Key points

  • Web 终端:xterm.js 远程终端,实时输出,窗口大小自适应;
  • 文件传输:SFTP 上传 / 下载,有进度条,能浏览远程目录;
  • 端口转发:本地隧道直连远程内网服务(数据库、API、管理后台),只监听 127.0.0.1;
  • 集群执行:一条命令并发跑多台主机,按别名 / 环境 / 标签过滤;
  • Agent 直连:Agent 和面板共用同一份主机配置,对话里说一句「连一下 xxx 看看状态」,智能体就去执行远程命令。

— source: plugin_wiki.readme_en (fallback readme_raw)

FAQ

Can others access my SSH console on the local area network?

No. All /api/dsh-ssh/* routes only trust local loopback connections (socket address 127/8 + same-origin Host header + sec-fetch-site/origin verification), LAN neighbors get 403 directly; local port forwarding tunnels also only listen on 127.0.0.1 and cannot be accessed externally. Code is at packages/dsh-ssh/src/routes.ts:101-111, packages/dsh-ssh/src/loopback.ts:44-62.

How are passwords stored?

Stored in plaintext at ~/.dsh/dsh-ssh.json (file 0600, directory 0700, atomic write), with the same trust model as ssh-skill - since ~/.ssh/config often stores passwords in comments, this plugin does not do additional encryption. Location and permissions are at packages/dsh-ssh/src/store.ts:18-20, 347-355.

Can the Agent execute commands on hosts I haven't configured?

No. The Agent can only operate on host aliases that are configured in the GUI or imported from ~/.ssh/config; when an alias is not configured, the tool call will directly error and will not fabricate a host. The convention is at packages/dsh-ssh/src/index.ts:67 (the 'Limitations' section of the system prompt) and packages/dsh-ssh/README.md:27.

— source: plugin_wiki.faq_json

Compatibility

  • DSH: 未声明(package.json 无 dsh.engines;通过 devDependencies 锁到 @deepseek-ai/dsh-* ^0.1.0-rc.8,详见 packages/dsh-ssh/package.json:60-72)
  • Node: ^22.19.0 || >=24.0.0(packages/dsh-ssh/package.json:7-9)

— source: plugin_wiki.compatibility_json

Pitfalls

Review the upstream repo before installing. This guide is auto-derived from indexed fields and may lag the latest release. If anything contradicts the official docs, treat the upstream source as authoritative.

— source: general rule