@zhangzhian/dsh-tunnel-core

中文文档
0.3.1发布于 2026/11/03MITTypeScriptES Module

dsh-tunnel的组件包:把本机sshd通过Cloudflare快速隧道暴露出去(主机半+设置页面板)

中文使用文档
文档目录7 节
  1. 安装
  2. 提供什么
  3. 要求
  4. 英语
  5. 安装
  6. 它提供了什么
  7. 要求

英语 | 简体中文

@zhangzhian / dsh-tunnel-core

开发工具(@zhangzhian/dsh-devtools)的隧道组件:主机;主机;主机; (远程API)+“。

不要单独装它 —— 装清单包 @zhangzhian/dsh-devtools,它会作为依赖自动拉下来, 在插件页上表现为「开发工具」卡片里的一行(不是另一张卡片)。

2026-10:原来有一个独立的清单包 @zhangzhian/dsh-tunnel(插件页上单独一张 「远程接入」卡片)。用户反馈「远程接入没和开发工具在一起」,于是把它并进了 dsh-devtools 【中文翻译】

安装

dsh plugin --profile web add @zhangzhian/dsh-devtools

提供什么

  • dshTunnel 远程控制 —— status / startSsh / stopSsh / startWeb / stopWeb / start / stop / probe / sshd / sshdEnablePlan / runSshdEnable / recipe / settings / updateSettings / installService / uninstallService / serviceState / doctor / credential / rotateCredential / setCredential,两端类型打通。 ⚠️ probe / doctor / installService / uninstallService / serviceState 不在面板上:它们是排查和运维用的。能力在、有测试,只是没有界面入口。
  • 隧道生命周期 —— 解析 cloudflared(显式路径 → PATH → 常见安装位置 → 按固定 版本下载)、带 --protocol http2 快速隧道 (1)、(1)、(1)、(1)、(1)、(1)、(1)。
  • 两条隧道各自独立 ——SSHphaseWeb WebwebPhase)各有自己的 阶段、域名、句柄、开关和风险确认;exposeWeb 是"用户想不想开"的期望态,webPhase 才是"现在到底开没开"。
  • 公网入口凭据 【中文译文】credential / rotateCredential / setCredential,落盘在 access-code,升级前那种"只有一行 【中文翻译】:【中文翻译】;【中文翻译 ?token=账号:密码。随机那一份是默认(8 位账号 + 24 位密码),也可以换成用户自己 填的1 .主机:validateCredential,账号和密码里都不许有冒号 —— 直达链接 靠第一个冒号切分)。
  • 端口纪律 —— 客户端端口永远落在 2201–2299,而且对同一台宿主机是稳定的,所以 dsh-电子
  • 三平台服务定义 —— plistFor(LaunchAgent),unitFor(systemd); taskXmlFor(计划任务)都是纯函数,所以虽然这里只能跑其中一个,转义规则在每个平台 上都有单测守着。
  • 零依赖二维码编码器 ——包 require 平台提供的 9 个种子模块, 所以 qr.ts 是自己写的字节模式编码器,八个掩码都对着参考实现验证过。
  • 「还没开启远程登录」的引导 【翻译】:【翻译本平台确切的 macOS systemsetup -setremotelogin onLinux; systemctl enable --now ssh / sshd / ssh.socket, Windows Add-WindowsCapability + Set-Service sshd + Start-Service sshd),逐条可复制。 主按钮「在终端里执行」把命令预填【参考译文】TerminalView.write(),不带 换行),用户在自己的终端里按回车、输密码 —— 插件不提权、不碰 sshd_config, 无头服务器上照样能用。DSH / / / / / / / / / / 已经在监听时这块不出现(笨笨笨笨,笨笨笨笨)
  • 设置面板 —— 三个页签:dsh Web【翻译】: 配置()。页签条通栏、吸顶在 中文:1、2px 1、2px 1。碟子网 二维码(扫一下 【中文翻译】:【中文翻译】、【中文翻译 (域名、命令、脚本、四步说明 —— 平台按浏览器自动判断,没有切换控件,也没有二维码); 配置那条就是四个端口 / 路径字段(一份草稿 + 一个保存)。两条隧道各一张卡片(各自的 状态轮询与开关)、各一份独立的开启前风险确认。体检 / 自检 / 服务 / 诊断包不在面板上 (见上)。

要求

  • Node.js 20+。 主机 node:child_process、node:fs/promises、node:dgram 【翻译 AbortController —— 没有原生模块,所以 Linux / macOS / Windows。
  • 这就是我的意思,其客户端半身提供那 9 个种子模块(react、react/jsx-runtime、 @deepseek-ai/dsh-client-ui-primitives 等)。【中文译文】
  • cloudflared —— 在 PATH 【中文翻译】、【中文翻译】、【中文翻译 $DSH_HOME/dsh-tunnel/bin。
  • 这是一个很好的例子,最好只允许密钥登录。没开的话面板会给出本平台的开启命令, 并在终端里预填好(见上);各系统的开法另见 @zhangzhian/dsh-devtools 自述。

英语

@zhangzhian / dsh-tunnel-core

这个 隧道组件 开发工具(@zhangzhian/dsh-devtools):主机一半(隧道生命周期; sshd检查,系统服务,远程API)加上“远程访问”设置页面。

不要单独安装它——安装bundle包,它会把它作为 依赖。

安装

dsh plugin --profile web add @zhangzhian/dsh-devtools

它提供了什么

  • dshTunnel 远程名称空间 - - - - - - status / startSsh / stopSsh / startWeb / stopWeb / start / stop / probe / sshd / sshdEnablePlan / runSshdEnable / recipe / settings / updateSettings / installService / uninstallService / serviceState / doctor / credential / rotateCredential / setCredential,全部首尾相连。 ⚠️ probe / doctor / installService / uninstallService / serviceState 是 不在面板上:用于故障处理和操作。的功能 它们只是没有UI入口点。
  • 隧道的生命周期 ——解决 cloudflared (显式路径→ PATH →普通安装 位置→固定下载),刷出它 --protocol http2,解析快速隧道 从JSON-lines日志文件中取出主机名,并持久化每个状态更改,以便面板 在DSH重启后存活。
  • 两条独立隧道 - SSH隧道(phase)及深水网隧道 (webPhase),每个都有自己的阶段、主机名、进程句柄、开/关按钮和风险 确认; exposeWeb 是期望状态, webPhase 是正在播放的节目。
  • 公众入场凭据 -一个用户名和一个密码坐在隧道B的前面 代理(credential / rotateCredential / setCredential坚持,坚持 access-code; 保存单个明文密码的升级前文件仍然是 可读)。浏览器保存一个cookie 30天,直接链接将继续保存 ?token=<user>:<pass>.随机对是默认的(一个8个字符的用户名和一个 24个字符的密码),并且它 可以用一种用户类型代替吗: 验证驻留在主机的一半(validateCredential,用户名和 密码可以包含一个冒号(直接链接在第一个冒号上分开)。
  • 港口纪律 -客户端端口号总是来自2201-2299,它是稳定的 一个给定的主机,所以dsh-electron只需要配置一次。
  • 平台服务 - - - - - - plistFor (LaunchAgent), unitFor (系统用户单元)和 taskXmlFor (Task Scheduler)是纯函数,因此它们的转义规则是单位的 在每个平台上都测试过,尽管只有一个可以在这里运行。
  • 一个独立的QR编码器 -客户端包只能 require 平台的 九个种子模块,所以 qr.ts 是否对自包含的字节模式编码器进行验证 所有八个掩码的参考实现。
  • “SSH尚未启用”指南 -当sshd不监听时,SSH选项卡打印 这个平台(macOS)的精确命令 systemsetup -setremotelogin on; Linux systemctl enable --now ssh / sshd / ssh.socket,从发行版中挑选,是否 套接字激活正在使用;窗户 Add-WindowsCapability + Set-Service sshd + Start-Service sshd),每个都是可复制的。主按钮将命令置于dsh的前面 自己的终端(TerminalView.write()(没有尾随换行符),所以用户按Enter和 输入密码 在他们自己的终端 -插件永远不会提升,永远不会 触摸 sshd_config,它也可以在无头服务器上运行。只有一个“现在启用”按钮 当DSH本身是根/管理员时出现。积木会 不 出现SSHD时 已经在监听(标准是读取SSH横幅,而不是“用户是否单击”)。
  • 设置面板 - - - - - - 三个选项卡: 首先是DSH网络隧道 (这是默认值 视图)、SSH隧道和 配置 (两个隧道都使用的端口和cloudflare路径, 最后)。选项卡栏横跨整个宽度,固定在页眉下方,并标记 选择TAB,加2px下划线。dsh web选项卡保存URL加a 二维码 (扫描它,你在-链接携带凭据)和一个可编辑的用户名和 密码;SSH选项卡仅保存客户端配方(主机名、命令、脚本等) 步骤-平台自动检测,无切换器,无二维码);config选项卡 保存四个端口/路径字段(一个草稿,一个保存)。每个隧道都有自己的卡片 (它自己的状态轮询和切换)和它自己的风险确认。检查, 自检、服务和诊断包是 不在面板上 (见上图)。

要求

  • node . js 20 +。 主机只使用一半 node:child_process, node:fs/promises, node:dgram (自检的直接DNS查询)和 AbortController -没有本地人 模块,所以它在Linux, macOS和Windows上工作相同。
  • 安装DSH 它的客户端提供了九个种子模块(react, react/jsx-runtime, @deepseek-ai/dsh-client-ui-primitives,……)。其他的都是 在构建时捆绑。
  • cloudflared -发现于 PATH,或在公共安装位置下载 (SHA-256验证) $DSH_HOME/dsh-tunnel/bin.
  • 一个听筒最好只有钥匙。如果它是关闭的,面板打印每个操作系统 命令和前缀在终端中(见上文);README包含的包 同样的理由。

版本与发布记录

@zhangzhian/dsh-tunnel-core 共发布 6 个版本,首次发布于 2026/10/20;过去 12 个月发布了 6 个版本。

版本发布日期距今
0.3.1latest2026/11/03今天
0.3.02026/11/011 天前
0.2.22026/10/2113 天前
0.2.12026/10/2014 天前
0.2.02026/10/2014 天前
0.0.0-stage2026/10/2014 天前

关于 @zhangzhian/dsh-tunnel-core 的常见问题

@zhangzhian/dsh-tunnel-core 是什么?

dsh-tunnel的组件包:把本机sshd通过Cloudflare快速隧道暴露出去(主机半+设置页面板)

如何安装 @zhangzhian/dsh-tunnel-core?

在项目目录运行 npm install @zhangzhian/dsh-tunnel-core,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@deepseek-ai/cordis(~4.0.4)、@deepseek-ai/schemastery(~3.18.4)、@deepseek-ai/dsh-api-gateway(^0.2.0-rc.2)、@deepseek-ai/dsh-client-locale(^0.2.0-rc.2)、@deepseek-ai/dsh-client-ui-slots(^0.2.0-rc.2)、@deepseek-ai/dsh-typert-protocol(^0.2.0-rc.2)、@deepseek-ai/dsh-client-ui-renderer(^0.2.0-rc.2)、@deepseek-ai/dsh-client-ui-settings(^0.2.0-rc.2)、@deepseek-ai/dsh-client-ui-primitives(^0.2.0-rc.2)、@deepseek-ai/dsh-api-terminal-controller(^0.2.0-rc.2)、@deepseek-ai/dsh-client-ui-sidebar-right(^0.2.0-rc.2)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@zhangzhian/dsh-tunnel-core 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@zhangzhian/dsh-tunnel-core 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@zhangzhian/dsh-tunnel-core 可以商用吗?

@zhangzhian/dsh-tunnel-core 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@zhangzhian/dsh-tunnel-core 还在维护吗?

最新版本 0.3.1 发布于 2026/11/03(今天);至今共发布 6 个版本,其中过去 12 个月发布了 6 个;首次发布于 2026/10/20。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。