dsh ssh 怎么远程连接?DeepSeek Harness 远程运行理由与 DSH plugin 安全前提

概念与架构发布于 2026-10-13作者: DeepSeek Plugin 插件市场
dsh sshDeepSeek HarnessDSH pluginSSH 隧道远程访问
dsh ssh 并不是一条命令,而是用 SSH 远程连到跑着 dsh web 的服务器。本文讲为什么要远程跑 DeepSeek Harness、局域网与远程访问的安全前提(别绑 0.0.0.0、令牌别外传),以及 SSH 隧道的要点与部署指引。

严格说,dsh 里并没有 dsh ssh 这条子命令——大家说的「dsh ssh」,是指用 SSH 从本机连到跑着 dsh web 的服务器;因为 dsh web 默认只绑 127.0.0.1:3080,正确姿势是建 SSH 隧道,而不是把端口开到公网。

DeepSeek Harness 远程访问概览

本文聚焦两处:为什么要远程跑 dsh、以及远程访问的安全前提;SSH 隧道怎么建只留要点并指向部署旧文。 先把最容易误解的一点讲清:没有 dsh ssh 这个命令,SSH 是传输层动作,dsh 只负责在服务器上把服务跑起来。这套做法和「远程部署」是同一族问题的不同切面:部署讲怎么把服务在服务器上跑起来,本篇讲清「为什么要远程跑」和「为什么不能随便改绑定」,完整部署步骤对照《DeepSeek Harness 怎么部署到远程服务器》。

为什么要远程跑 dsh:服务器出算力,本机只当终端

把 dsh 放在服务器上跑、本机只当浏览器终端,动机主要有这么几个:算力与环境在服务器、工作区数据不出内网、无人值守常驻,以及多端看到同一套环境。 逐个看:

  1. 算力与环境在服务器 — 大仓库、构建工具链、本地模型都在服务器上,本机只需轻薄客户端。预期:重活集中在远端,本机不被拖慢。
  2. 数据不出内网 — 工作区文件留在服务器,本机只经隧道看结果。预期:敏感文件不必拷到本地。
  3. 无人值守常驻 — 配合终端复用器或系统服务,服务长期在线。预期:随时连上都能用,不必每次手动起。
  4. 多端看到同一套环境 — 服务器上一套 profile 与 DSH插件,桌面、笔记本、手机连上去共用同一份。预期:不必在每台设备上各配一遍,长任务也不会因换设备而中断。
  5. 无图形界面不是问题 — 服务端与浏览器本来就分开,纯服务器环境只打印地址。预期:不加 --no-open 也不会去乱找浏览器,加了更干净。

换句话说,远程访问的价值不是「换个地方点界面」,而是把有状态、有权限的那部分留在受控机器上。

dsh ssh 怎么连:SSH 隧道与局域网的要点

受支持的连法只有一条:SSH 本地端口转发——ssh -L 3080:127.0.0.1:3080 <用户>@<服务器>,把服务器回环的 3080 映射到本机,再在本地浏览器打开服务器终端打印的那个带 ?token= 的地址(来源)。 因为 dsh web 默认绑 127.0.0.1 且不支持 --host 0.0.0.0,同网段直连也不在受支持范围内,局域网设备同样得走隧道。还有一条容易忽略的设计:启动环境里存在 SSH_CONNECTION 或 SSH_TTY 时,dsh web 会抑制默认浏览器的自动打开、只打印宿主机 URL,因为本地转发地址由 SSH 客户端或编辑器持有、服务端无从得知。服务器侧起服务、~/.ssh/config 固化 LocalForward、以及用 tmux 让进程常驻的完整步骤,已在《DeepSeek Harness 怎么部署到远程服务器》里逐条写清,这里不再重复。远程连进来之后要补插件,直接在界面里用 DSH Plugin Hub 的插件市场按分类挑就行,不必在隧道两端来回敲命令;手机等其它设备的接入与取舍见《DeepSeek Harness 手机端怎么用》。

dsh 远程访问的安全前提:别绑 0.0.0.0、令牌别外传

两条硬前提:不要把服务绑到 0.0.0.0、也不要把带令牌的地址随手转发出去(来源)。 为什么卡得这么死?因为 Web 应用能以 Host 用户的权限执行命令、读写本机文件,一旦匿名可达,就等于把一台机器的控制权交出去。按顺序检查:

  1. 不要用 --host 0.0.0.0 暴露 — 它带着本机文件与命令执行能力,官方刻意拒绝这个用法。预期:服务始终只监听回环,外部无法直连。
  2. 要限制来源就用 --trusted-host — 向 /api 信任栅栏加入受信主机名,而不是把服务推向全网。预期:只有列出的主机名被信任。
  3. 令牌一次性、别外传 — 启动令牌只打印一次、重启即变。预期:从不把 ?token= 的地址贴进聊天或截图。
  4. 隧道用完即收 — 不用时断开 SSH 或重建。预期:本机映射端口失效,访问随之关闭。
  5. 批处理走无界面模式 — 只想跑任务就用 dsh --profile headless "任务"。预期:完全不暴露 Web 入口。
  6. 别用反向代理硬怼公网 — 官方没有为远程部署提供 TLS、转发 header 解释或代理配置支持,自行把 3080 推上公网已经超出受支持范围。预期:对外需求先评估风险,别默认它就是受支持的部署方式。
  7. 令牌别落进历史 — 带 ?token= 的地址会留在浏览器历史与 shell 历史里。预期:取到后立刻换成会话 cookie,别把它粘进 issue、聊天或截图。

一句话:认证解决的是「谁能在本机用」,不是「能不能开到公网」;这两者不能互相替代。 其它运行模式的适用边界见《dsh 运行模式怎么选》。

远程访问 DSH plugin 的注意事项与局限

  1. 没有 dsh ssh 子命令 — 别去文档里找这个命令,SSH 是你在系统层做的动作,dsh 只管起服务。
  2. 绑定地址不可改 — 127.0.0.1 与拒绝 --host 0.0.0.0 是官方决策,任何绕过都超出受支持范围。
  3. 令牌每次启动都变 — 远程访问每次都要从服务器终端重新取一次带令牌的地址,无法预先收藏。
  4. 隧道断开即失去访问 — SSH 会话结束时转发失效,界面打不开不等于服务挂了。
  5. 数据目录要归属清楚 — 以哪个用户运行 dsh,就用哪个用户的 $DSH_HOME,换用户运行等于换了一套配置与 DSH插件。
  6. 常驻要自己托管 — 官方未提供服务化方案,长期运行请用终端复用器或系统服务自行托管。

与其 SSH 进去后一遍遍手敲 dsh plugin add 装 DeepSeek插件、出问题还得在服务器上到处翻日志,不如在服务器侧用 DSH Plugin Hub:插件市场按分类挑,装、更新、卸载的每一步操作轨迹都会写进系统日志,省得在隧道两端来回比路径。

系统日志

来源:dsh CLI README、dsh CLI behavior reference、DeepSeek Harness README(官方仓库)

常见问题

dsh ssh 是一条命令吗?DeepSeek Harness 到底怎么远程连接服务器?

dsh ssh 不是 dsh 的子命令,而是大家对手动做法的简称:先在服务器上跑 dsh web,再在本机用 ssh -L 3080:127.0.0.1:3080 <用户>@<服务器> 建本地端口转发,然后在浏览器打开带令牌的地址。核心是 SSH 隧道,不是某个 dsh 的参数。

为什么 dsh web 起来的服务在服务器上打不开、本机也连不上?

因为 dsh web 默认只绑 127.0.0.1:3080,这个地址只有服务器本机能访问,局域网其他机器和公网都连不上。正确做法不是改绑定,而是建 SSH 本地端口转发,把服务器回环的 3080 映射到本机,再在本地浏览器访问。

通过 SSH 隧道访问 DeepSeek Harness,启动令牌怎么用、会过期吗?

启动令牌是进程每次启动随机生成、只打印一次的凭据,拿去打开会把它换成会话 cookie 并跳到干净的根路径。它不持久化,重启后令牌就变,所以远程访问每次都要从服务器终端重新取一次带 ?token= 的地址,别把它收藏或转给别人。

能把 dsh web 绑到 0.0.0.0 让局域网直接访问吗?

不能。CLI 有意不支持 --host 0.0.0.0,传入会以用法错误退出,这是官方为了避免在没有 TLS 与代理约定的前提下暗示支持网络部署。想在局域网访问,同样用 SSH 隧道;要限制来源主机则用可重复的 --trusted-host 添加受信主机名。

服务器上没有图形界面,SSH 断开后 DeepSeek Harness 就停了吗?

无图形界面不影响运行,它只打印访问地址、不尝试打开浏览器。但 SSH 断开可能让前台进程退出,所以要常驻就用 tmux 或系统服务托管,并明确数据目录 $DSH_HOME 归属哪个用户;否则重新登录后进程早没了,隧道也白建。

相关术语

SSH 本地端口转发
SSH 本地端口转发是用 ssh -L 把本机某个端口映射到远端服务器回环地址的做法,让本机浏览器以为自己连的是本地端口,实际流量经加密隧道抵达服务器。— DeepSeek Harness README(官方仓库)
--trusted-host
--trusted-host 是 dsh web 可重复使用的参数,向 /api 浏览器信任栅栏加入受信主机名;它用于限制来源主机,不用于把服务暴露到网络。— dsh CLI behavior reference
启动令牌
启动令牌是 DeepSeek Harness 进程每次启动随机生成、只打印一次的凭据,访问带令牌的根 URL 会把它换成 host-only 会话 cookie,之后正常浏览。— dsh CLI behavior reference
headless profile
headless profile 是 DeepSeek Harness 内置的无界面运行模式,用 dsh --profile headless "任务" 跑一个全新会话并打印结果,完全不暴露 Web 入口。— dsh CLI README

来源