One-command DeepSeek Harness on your VPS: a zero-dependency login gateway puts the stock DSH web UI - settings, API keys, plugin market - behind HTTPS and a password, reachable from anywhere. · 一条命令把 DeepSeek Harness 装进 VPS:零依赖登录网关 + 自动 HTTPS,公网可达,设置、API Key、插件市场全都能用。
安装验证:运行验证通过 (L5) · 验证于 dsh 0.2.1-rc.2 · 验证日期 安装验证详情 →
功能介绍AI
一条命令把 DSH Web UI 装进 VPS,零依赖登录网关加自动 HTTPS,公网随时可达。
- 一条命令在 VPS 上安装并运行原生 DSH Web UI
- 零依赖登录网关,密码保护访问
- 自动 HTTPS,公网随时可达
能力标签为 AI 推断或 README 规则抽取(见角标),词表受限、未经安装验证;AI = 推断,README = 原文关键词。
安装
dsh plugin --profile web add dsh-vps安装方式: npm · 运行验证通过 (L5)
验证与兼容性
按插件版本分组:每张卡是该插件版本实测过的 dsh 版本与安装兼容结论(L5 优先)。只列真测过的组合——未列出 = 未实测,不推定兼容。L1–L3 为插件级静态档(与 dsh 版本无关,各 dsh 行同值):在行内「验证等级」格里与 L4/L5 并列显示、标注「静态」,证据体为插件级单份、随行内「查看检查项与证据」出现,不在各版本重复存储。
External credentials(插件级):未检测到
○ 作者未声明 dsh 版本要求 —— 安装不会因版本被拒。
| 插件版本 \ dsh | dsh 0.2.1-rc.2 当前 | dsh 0.2.1-alpha.4 | dsh 0.2.1-alpha.2 |
|---|---|---|---|
| 1.16.1 | ✓ | ✓ | · |
| 1.15.1 | · | · | ✓ |
1.16.1npm✓ 运行验证通过 22026-10-19
dsh-vps
✓dsh 0.2.1-rc.2当前2026-10-19L5 · 运行验证通过
- • Node.js: v24.14.0
- • DSH: 0.2.1-rc.2
- • 被测插件工件: npm · dsh-vps@1.16.1
ID: dsh-vps@1.16.1@dsh0.2.1-rc.2 · 档位: l4-sandbox
签发:2026-10-19 · 有效至:2026-10-26
查看检查项与证据
已在加载器目录树中激活(150 个条目)
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✓dsh 0.2.1-alpha.42026-10-18L5 · 运行验证通过
- • Node.js: v24.14.0
- • DSH: 0.2.1-alpha.4
- • 被测插件工件: npm · dsh-vps@1.16.1
ID: dsh-vps@1.16.1@dsh0.2.1-alpha.4 · 档位: l3-fullscan
签发:2026-10-18 · 有效至:2026-10-25
查看检查项与证据
已在加载器目录树中激活(150 个条目)
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
1.15.1npm✓ 运行验证通过 12026-10-15
dsh-vps
✓dsh 0.2.1-alpha.22026-10-15L5 · 运行验证通过
- • Node.js: v24.14.0
- • DSH: 0.2.1-alpha.2
- • 被测插件工件: npm · dsh-vps@1.15.1
ID: dsh-vps@1.15.1@dsh0.2.1-alpha.2 · 档位: l3-fullscan
签发:2026-10-15 · 有效至:2026-10-22
查看检查项与证据
已在加载器目录树中激活(150 个条目)
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
仅展示最近 3 个已发布版本;源码快照(commit hash)组、未标注工件组与更早版本不展示——全量档案保留在数据层(插件无任何已发布版本时,快照/未标注组才照常展示)。
作者徽章
将官方徽章嵌入你的 README,展示插件的安全与安装检测状态:
`[](https://www.dsh.so/artifact/dsh-vps/)``[](https://www.dsh.so/artifact/dsh-vps/)`安全报告
两层自动化检查,都不是人工审核:静态扫描(逐插件规则判定)与模型驱动的动态安全审计(只覆盖静态判定 warn 及以上的插件子集,不执行插件代码)。
静态扫描 低,动态审计最高 中,按「取更严者」→ 总评级 中。
v1.16.1dsh 清单1.16.1git2026-10-211.16.1版本一致clean · npmvet 为 AST 静态扫描(npm 发布物或 git 源码)。
静态发现(12 条)
- 严重pipeShell · shell
plugin/client.js:2317const INSTALL_CMD = 'curl -fsSL https://raw.githubusercontent.com/AIcivilization/dsh-vps/main/install.sh | sudo bash -s' - 严重pipeShell · shell
plugin/client.js:2897const UNINSTALL_CMD = 'curl -fsSL https://raw.githubusercontent.com/AIcivilization/dsh-vps/main/uninstall.sh | sudo bash -s -- --yes --keep- - 严重secretPem · secrets
plugin/client.js:3151placeholder: '-----BEGIN OPENSSH PRIVATE KEY-----\n…\n-----END OPENSSH PRIVATE KEY-----', - 严重sshWrite · destructive
plugin/client.js:2964return `mkdir -p ~/.ssh && chmod 700 ~/.ssh && echo '${safe}' >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys` - 严重pipeShell · shell
uninstall.sh:198curl -fsSL https://raw.githubusercontent.com/AIcivilization/dsh-vps/main/install.sh | sudo bash -s -- --domain <你的域名> --mirror cn - 警告childProcess · code-exec
gate/server.js:493const child = spawn(process.execPath, args, { - 警告childProcess · code-exec
gate/server.js:1533const child = spawn(process.execPath, [DSH_BIN, ...cmdArgs], { - 警告netIp · network
gate/server.js:51const CADDY_ADMIN = process.env.CADDY_ADMIN || "http://127.0.0.1:2019"; - 警告fsWrite · files
gate/server.js:329fs.writeFileSync(file, key, { mode: 0o600 }); - 警告fsWrite · files
gate/server.js:1363fs.writeFileSync(path.join(STATE_DIR, "gate.env"), lines.join("\n") + "\n", { mode: 0o600 }); - 警告fsWrite · files
gate/server.js:1372fs.writeFileSync(cfgFile, JSON.stringify(cfg, null, 2) + "\n", { mode: 0o600 }); - 警告netIp · network
install.sh:508body=$(curl -fsS --max-time 3 "http://127.0.0.1:$GATE_PORT/gate/health" 2>/dev/null) || { sleep 2; continue; }
展开 3 条审计发现
- medium登录限流取 X-Forwarded-For 第一段,可被伪造绕过
gate/server.js:776网关部署在 Caddy 之后,而 Caddy 会把真实客户端地址追加到已有的 X-Forwarded-For 上,不会覆盖。取第 [0] 段使得远端攻击者可自行决定限流键,每个请求换一个假 IP,5 次/5 分钟的限制永不触发,可无限次爆破 /login、/setup 和 /gate/password(后者复用同一计数器)。
- mediumsetup.lock/setup.token 缺失时,未登录访问 /setup 即可重设管理员
gate/server.js:1218main() 在会话校验之前就把 /setup 分发出去,而 handleSetup 只检查 state/setup.lock 是否存在。正常安装后 lock 与 token 都在,但只要锁文件缺失(部分恢复、人工清理,或 reset-admin 未重建锁),/setup 就暴露在公网;又因令牌文件在完成时被删除,setupTokenValid 退化为恒真,未认证攻击者可直接 POST /setup 覆盖管理员用户名与密码,接管整套部署。
- low开放重定向:safeNext 允许反斜杠,?next=/\evil.com 可跳转外站
gate/server.js:750浏览器在 http(s) 下会把 '\' 规范化为 '/',因此 /\evil.com 会被解析成协议相对的 //evil.com。该值会回填到登录表单,并在登录成功后作为 Location 头使用,被诱导访问 /login?next=/\evil.com 的受害者在登录成功后被跳转到攻击者站点,可用于从真实域名起步的钓鱼。
网关整体稳健(无严重问题):限流可被伪造的 X-Forwarded-For 绕过,锁文件/令牌缺失时 /setup 可被接管管理员,next 存在反斜杠开放重定向。
口径:动态审计只会把风险往严重里判,不会把风险降下来(只升不降,不构成豁免);模型判错时由人工复核撤回,撤回后回到静态判定。合并判定 = 两层中更严的那一个。
免责声明:静态扫描与动态安全审计都是自动化分析,不构成安全保证。安装前请自行审查。
活跃度
最近提交 2026-10-15 · 活跃度:活跃
• 仓库创建: 2026-09-19
• 星标: ★ 8 · 复刻: 2
• 健康度: 活跃 — 近 30 天有提交
来源
作者 README
GitHub 原文 ↗展示作者仓库中的原始 README 内容,实时抓取、未做改写;优先加载中文版(README.zh-CN.md 等),无中文版时回退英文。
