英语 | 简体中文
@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)。 - 两条隧道各自独立 ——SSH
phaseWeb 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, WindowsAdd-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; Linuxsystemctl 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包含的包 同样的理由。