阿里云中继穿透 MaybeMeibeMaybi/dsh-aliyun-relay-access
DeepSeek Harness让手机随时远程打开电脑上的 dsh 界面
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/27 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查未通过:缺少 main/exports/bin 入口声明。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add MaybeMeibeMaybi/dsh-aliyun-relay-access该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · ui
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 38 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装缺少 main/exports/bin 入口声明
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-aliyun-relay-access(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/8 08:45:26
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 16 处,展示前 16 条)
- 读取密钥环境变量src/gateway/dsh-auth-gateway.mjs:59
const PASSWORD = arg("password", process.env.DSH_GW_PASSWORD ?? ""); - 读取密钥环境变量src/gateway/dsh-auth-gateway.mjs:60
const PASSWORD_HASH = arg("password-hash", process.env.DSH_GW_PASSWORD_HASH ?? ""); - 读取密钥环境变量src/gateway/dsh-auth-gateway.mjs:61
const REGISTER_KEY_FILE = arg("register-key-file", process.env.DSH_GW_REGISTER_KEY_FILE ?? ""); - 读取密钥环境变量src/gateway/dsh-auth-gateway.mjs:62
const REGISTER_KEY_INLINE = arg("register-key", process.env.DSH_GW_REGISTER_KEY ?? ""); - 读取本地文件src/gateway/dsh-auth-gateway.mjs:72
if (!existsSync(PFX)) throw new Error(`--pfx 不存在: ${PFX}`); - 读取本地文件src/gateway/dsh-auth-gateway.mjs:73
return { pfx: readFileSync(PFX), passphrase: PFX_PASS || undefined }; - 读取本地文件src/gateway/dsh-auth-gateway.mjs:75
if (!CERT || !KEY || !existsSync(CERT) || !existsSync(KEY)) { - 读取本地文件src/gateway/dsh-auth-gateway.mjs:78
return { cert: readFileSync(CERT), key: readFileSync(KEY) }; - 读取本地文件src/gateway/dsh-auth-gateway.mjs:104
if (REGISTER_KEY_FILE && existsSync(REGISTER_KEY_FILE)) { - 读取本地文件src/gateway/dsh-auth-gateway.mjs:106
return readFileSync(REGISTER_KEY_FILE, "utf8").trim(); - 发起网络请求src/gateway/dsh-auth-gateway.mjs:293
const req = http.request( - 发起网络请求src/gateway/dsh-auth-gateway.mjs:319
const req = http.request( - 发起网络请求src/gateway/dsh-auth-gateway.mjs:368
const upstream = http.request( - 发起网络请求src/gateway/dsh-auth-gateway.mjs:617
const upstream = http.request({ hostname: BACKEND_HOST, port: BACKEND_PORT, method: req.method, path: req.url, headers }); - 发起网络请求src/tunnel/dsh-entry-proxy.mjs:240
const proxyReq = http.request( - 发起网络请求src/tunnel/dsh-entry-proxy.mjs:289
const upstreamReq = http.request({
扫描于 2026/11/4(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 远程访问电脑网页界面
- frp反向隧道
- 穿透CGNAT与防火墙
用便宜云中转从任何地方访问 DeepSeek Harness(dsh)网页 GUI。frp 反向隧道:PC 主动外拨,CGNAT 和入站防火墙都不影响。
README
由 DeepSeek 最新模型翻译生成基于阿里云的公网远程访问与控制 DeepSeek Harness
通过廉价的云端中继,从任何地方访问 DeepSeek Harness(dsh)Web GUI
License: MIT
SSH tunnel
HTTPS gateway
Aliyun
Platform
电脑在任何网络下(家庭宽带、5G 热点、外地 WiFi、校园网、运营商 CGNAT 大内网),手机都能通过一个固定的公网地址访问这台电脑上的 dsh GUI。
本项目提供三种由弱到强的接入方式,可以按需选择或叠加:
| 方式 | 手机要求 | 加密 | 认证 | 公网端口 |
| ① frp 反向隧道(起步方案) | 浏览器 | 隧道段加密 | dsh token | 7000 + 18080 |
| ② SSH 反向隧道(推荐) | SSH 客户端 | SSH | 密钥 | 仅 22 |
| ③ HTTPS 认证网关 | 仅浏览器 | TLS | 密码 | 22 + 18443 |
③ 是原生鸿蒙(无 SSH 客户端)唯一可行的方案;配合 dsh-token-broadcast 插件自动上报 token,用户只需输一次密码。
演进过程与实测结论见 docs/UPDATES-2026-09-23.md。
展开完整文档(README 剩余 1 节)
基于阿里云的公网远程访问与控制 DeepSeek Harness 通过廉价的云端中继,从任何地方访问 DeepSeek Harness(dsh)Web GUI License: MIT SSH tunnel HTTPS gateway Aliyun Platform 电脑在任何网络下(家庭宽带、5G 热点、外地 WiFi、校园网、运营商 CGNAT 大内网),手机都能通过一个固定的公网地址访问这台电脑上的 dsh GUI。 本项目提供三种由弱到强的接入方式,可以按需选择或叠加: | 方式 | 手机要求 | 加密 | 认证 | 公网端口 | | ① frp 反向隧道(起步方案) | 浏览器 | 隧道段加密 | dsh token | 7000 + 18080 | | ② SSH 反向隧道(推荐) | SSH 客户端 | SSH | 密钥 | 仅 22 | | ③ HTTPS 认证网关 | 仅浏览器 | TLS | 密码 | 22 + 18443 | ③ 是原生鸿蒙(无 SSH 客户端)唯一可行的方案;配合 dsh-token-broadcast 插件自动上报 token,用户只需输一次密码。 演进过程与实测结论见 docs/UPDATES-2026-09-23.md。 零、三种方式怎么选 - 只想最快跑通 → 用 ①(docs/DEPLOY.md 的 frp 主线) - 追求最小暴露面 + 最安全 → 用 ②(src/tunnel/,公网只剩 22 端口) - 手机是原生鸿蒙 / 不想装任何客户端 → 用 ③(src/gateway/) ②③ 都已在真实环境验证通过:②的公网端口收敛到仅 SSH;③的浏览器流程(登录 → 直接进 GUI → WebSocket 101)见 tests/。 一、为什么是中继,而不是端口映射 | 方案 | 前提 | 适用性 | | 端口映射 / DDNS | 电脑要有公网 IP,且能在路由器上开端口 | ❌ 电脑在随机网络间切换时经常不成立,甚至处在运营商 CGNAT 之后 | | 反向隧道中继(本项目) | 只需服务器有公网 IP | ✅ 电脑主动连出到服务器,对 CGNAT 与入站封锁免疫 | 关键点:连接方向是「电脑 → 服务器」,所以电脑侧不需要任何入站端口。 方式①:frp(起步方案) 手机 ──► :18080 ──► [frps] ──► 反向隧道 ──► 电脑 frpc (公网入口) (云服务器) (电脑主动连出) │ ▼ 127.0.0.1:18080 (dsh-entry-proxy) │ ▼ 127.0.0.1:3080 (dsh web) dsh web 本体始终只监听环回;公网只暴露 frps 的一个端口。 二、⚠️ 云服务器免费额度的真实机制(选型最易踩坑) 以阿里云个人试用为例,它不是"送一台机器 N 个月",而是: | 机制 | 数值 | | 总抵扣额度 | 300 元(个人实名认证) | | 每小时抵扣上限 | 0.833 元/小时 | | 权益有效期 | 最长 3 个月 | | 理论最长运行 | 约 1181 小时 ≈ 49 天 | 核心结论: 1. 必须选单价 ≤ 0.833 元/小时的规格。若选了例如 1.2 元/小时的规格,超出的 0.367 元/小时要你自己付钱,还会更快烧完新用户权益。 2. 规格越小跑得越久;1核1G 不建议,推荐 经济型 e 实例 2核2G 或 2核4G。 3. 免费实例不支持 ICP 备案,所以用 7000 / 18080 非标端口——既避开备案,也不冲突。 4. 到期或额度耗尽会自动释放实例,数据只保留 72 小时:服务器上只放可重建的东西。 5. 同一实名主体只能领一次;买过/试用过 ECS 的账号可能已失去资格。 务必设置预算告警:控制台 → 费用与成本 → 预算管理 → 阈值 1 元。 三、目录结构 . ├── README.md ├── LICENSE ├── package.json ├── docs/ │ ├── DEPLOY.md 从零部署:8 步 + 排错表 │ ├── ARCHITECTURE.md 链路细节、七个设计决策、分层验证法 │ ├── SECURITY.md 三道防线、凭据清单、SSH 加固、自查清单 │ ├── MIGRATION.md 换服务器四步 / 换电脑三步 │ ├── INCIDENT-2026-09-27-gateway-token-not-registered.md ★ 网关漏注册 token 复盘 │ └── UPDATES-2026-09-23.md 本次演进汇总(SSH 隧道 + HTTPS 网关 + 实测结论) ├── tools/ │ └── verify-gateway.mjs ★ 一条命令查清"远程为什么进不去"(--register 可补注册) ├── src/ │ ├── server/ │ │ ├── relay-server-setup.sh 服务器端一键部署 frps(自包含) │ │ └── aliyun-paste-command.sh 适合直接粘贴进网页控制台的版本 │ ├── client/ │ │ ├── frpc.toml.template 电脑端配置模板(两处占位符) │ │ └── ssh-key-setup.ps1 SSH 密钥登录 + 加固(纯 ASCII) │ ├── tunnel/ ★ 方式②:SSH 反向隧道(取代 frp) │ │ ├── Start-SshTunnel.ps1 隧道客户端 + 掉线自愈(纯 ASCII) │ │ ├── Switch-ToSshTunnel.ps1 从 frp 一次性切换过来 │ │ ├── relay-ssh-hardening.sh 服务器加固 + 退役 frps │ │ └── dsh-entry-proxy.mjs ★ 隧道入口的本地代理(局域网与中继共用一份) │ └── gateway/ ★ 方式③:HTTPS 认证网关 │ ├── dsh-auth-gateway.mjs 网关本体(TLS + 密码 + 会话 + WS 隧道) │ ├── install-auth-gateway.sh 一键部署 + 生成注册密钥 + systemd │ ├── issue-ca-and-server-cert.sh 建 10 年 CA 并签发服务器证书 │ └── install-node-official.sh apt 只有 Node 12,改用官方二进制 └── tests/ ├── browser-flow-test.mjs 严格模拟浏览器 cookie 流转 └── test-skip-token.mjs 验证"只输密码即可进入 GUI" 方式②:SSH 反向隧道(取代 frp) 手机 ──ssh -L 18080:127.0.0.1:18080──► 服务器:22 ──隧道──► 电脑:18080 ──► dsh:3080 - 电脑执行 ssh -N -R 18080:127.0.0.1:18080 dsh-aliyun - 服务器侧只得到 127.0.0.1:18080(不指定 bind 地址时 sshd 默认绑环回,且 GatewayPorts no) - 公网只剩 22 一个端口;7000 与 18080 都可以从安全组删掉 - 掉线自愈:Start-SshTunnel.ps1 内置监督循环(PC 换网必掉线) 方式③:HTTPS 认证网关(手机只需浏览器) 手机 ──https(18443)──► 服务器网关(密码认证 + TLS) ──► 127.0.0.1:18080 ──► dsh:3080 (方式②建立的隧道) 网关的关键设计(都在 docs/UPDATES-2026-09-23.md 里详述): 1. 网关持有 dsh 会话,浏览器只持有网关会话。 dsh 的会话 cookie 按 authority 命名,网关改写 Host 后若原样透传 cookie, 浏览器会存在错误域名下、后续请求带不回去(表现为 authentication required)。 2. 转发时去掉 Origin、把 Host 改写为 127.0.0.1:18080 → 穿过 dsh 信任围栏。 3. 隧道 WebSocket 升级,否则会话列表为空、一直"自动重连中"。 4. token 自动上报:电脑上的 dsh-token-broadcast 插件用注册密钥把 token 上报到 /__gw_register,于是浏览器只输密码即可进入,无需粘贴 token。 四、端口与要放行的地方 | 端口 | 用途 | 谁监听 | | 7000 | frpc 连入 frps | 云服务器 | | 18080 | 手机访问的公网入口 | 云服务器 frps → 隧道 → 电脑 127.0.0.1:18080 | 要放行的只有两处(电脑侧不需要,因为是主动连出): 1. 云控制台安全组(网页操作,脚本无法代劳):入方向 TCP 7000 与 18080 2. 服务器自带防火墙(ufw / firewalld):部署脚本会自动放行 五、快速开始 整体八步,详见 docs/DEPLOY.md: 1. 注册 + 个人实名认证 → 领免费试用 ECS(2核2G,确认单价 ≤0.833 元/小时) 2. 安全组放行 7000、18080 3. 控制台「远程连接」里粘贴 src/server/aliyun-paste-command.sh → 记下打印的 token 4. 下载 frpc.exe,把 src/client/frpc.toml.template 复制为 frpc.toml 并填两个占位符 5. 手工跑一次 frpc,看到 start proxy success 6. 把公网 IP 加进 cordis.patch.yml 的 trustedHosts(两处),重启 dsh 7. 手机打开 http://:18080/?token= 8. 可选:用 src/client/ssh-key-setup.ps1 -Harden 关闭 SSH 密码登录 依赖说明:本项目需要电脑侧有一个监听 127.0.0.1:18080 的入口代理。 它由姊妹项目 dsh-lan-remote-access 的 dsh-entry-proxy.mjs 提供(多配一条 bindIp: 127.0.0.1 / port: 18080 的条目即可)。 两个项目建议一起部署。 六、最易漏的一步:信任围栏 dsh 的 /api 会比较 Host 与 Origin,并要求 authority 属于“环回或已声明可信”。 公网 IP 不写进去,手机访问一律 403,且任何代理都无法靠改写 Host 绕过。 - id: web-runtime config: trustedHosts: - # 必须加 - id: connection config: trustedHosts: - # 必须加(两处缺一不可) 七、远程进不去?先跑体检,别急着重启 2026-09-27 真实事故复盘见 docs/INCIDENT-2026-09-27-gateway-token-not-registered.md。 两个最容易误判的失败模式: | 手机/浏览器上看到 | 真实原因 | 怎么办 | | “网关尚未收到本次启动的 token” | 网关只在内存里存 token,dsh 重启后必须重新注册(由电脑上的 token-broadcast 插件完成)。注册漏一次,粘贴什么 token 都无效 | 补一次注册即可,不用重启 dsh | | 页面能开、但一直“自动重连中”、会话列表空 | /api/remote.mux 的 WebSocket 没建起来。入口代理是长连接反代,dsh 重启后它仍指向旧实例(旧代理会回 502) | 重启入口代理(新版代理已自动跟随地址) | 体检工具(源码里不含任何真实地址,配置走环境变量 DSH_GW_HOST / DSH_GW_PORT / DSH_GW_KEY_FILE / DSH_ENTRY_PORT): node tools/verify-gateway.mjs # 只体检:dsh 在不在、网关可达否、token 注册否、局域网入口通否 node tools/verify-gateway.mjs --register # 体检 + token 缺失时补注册 它把“进不去”拆成可判定的四段,直接告诉你是哪一段断了。 八、安全(详见 docs/SECURITY.md) 三道防线,缺一不可: | 防线 | 保护什么 | | ① 安全组只放行 7000 / 18080 | 减少暴露面 | | ② frps auth.token | 防止陌生人往你的隧道注册代理 | | ③ dsh 会话 token + 信任围栏 | 真正的访问控制 | - frp token 由部署脚本随机生成,存于服务器 /opt/frp/frp-token(权限 600)。 - frps 的 allowPorts 只放开 18080 一个 remotePort,防止隧道被滥用。 - 入口代理不是鉴权层:它只负责转发,真正拦人的是第 ③ 道。 - 建议 SSH 改密钥登录并关闭密码(脚本 -Harden,且会立即复验,不会把你锁在门外)。 八、迁移 - 换服务器:新机器重跑部署脚本 → 改 frpc.toml 两行 → 改 trustedHosts → 重启 dsh。四步,十分钟。 - 换电脑:部署姊妹项目 → 拷 frpc.toml → 配 trustedHosts。 详见 docs/MIGRATION.md。 许可证 MIT,见 LICENSE。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
MaybeMeibeMaybi/dsh-aliyun-relay-access
让手机随时远程打开电脑上的 dsh 界面
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,350已汉化DSH
71.5
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,506已汉化DSH
71.1
AI 矢量设计工具ZSeven-W/openpencil
全球首个 AI 原生开源矢量设计工具。
★ 7,027已汉化DSH
71.1
这是你的仓库?认领条目