DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Vpn — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

dsh-vpn

Vpn

DeepSeek Harness 插件:一键将加密 VPN(sing-box)部署到您自己的 VPS,以保护您在不受信任网络上的连接和隐私

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add dsh-vpn@0.1.12
README兼容性版本

兼容性与来源证明

Vpn 以 dsh-vpn 发布,当前版本为 0.1.12。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/10/16

版本

0.1.12stable
2026/10/16
0.1.11stable
2026/10/16
0.1.10stable
2026/10/15
查看其余 10 个版本收起版本
0.1.9stable
2026/10/15
0.1.8stable
2026/10/15
0.1.7stable
2026/10/13
0.1.6stable
2026/10/10
0.1.5stable
2026/10/2
0.1.4stable
2026/9/30
0.1.3stable
2026/9/26
0.1.2stable
2026/9/24
0.1.1stable
2026/9/24
0.1.0stable
2026/9/24

相关插件

正在加载相关插件…

最新版
0.1.12
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
907.8 kB
文件数
10
Surface
web
许可证
MIT
发布源
npm
周下载
235
安全扫描
✓ v0.1.12 扫描通过
查看源码 ↗项目主页 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 security-access 分类下经过校验的插件。

Cc Safety Netcc-safety-net编码代理 CLI 钩子——阻止破坏性命令和访问机密文件Doctor@linxin666/dsh-doctorDSH 配置档案的事务性救援模式,配备受监督的启动器、隔离的恢复容器、确定性修复、健康监控以及本地 Web 恢复控制台Mobiledsh-mobileDeepSeek Harness 移动端适配与安全访问插件,支持局域网、远程连接、Android App 和手机浏览器。Codex Subscriptiondsh-codex-subscription通过 OAuth 在 DeepSeek Harness 中使用 ChatGPT 和 Codex 订阅,支持配额管理、安全重置、网页搜索、图像和快速模式

README

dsh-vpn

DeepSeek Harness 插件:在你自己的 VPS 上一键部署加密的 VPN 服务,保护你的网络连接安全。在 dsh 里填好 VPS 的 IP、端口、用户名和密码(或用密钥登录),一键部署 sing-box,然后扫二维码导入手机或电脑上的客户端。

用途:保护你的网络安全

  • 加密你的网络流量。 在公共 Wi-Fi(咖啡馆、机场、酒店)等不可信网络上,你设备和服务器之间的全部流量都经过加密,别人无法窃听或篡改。
  • 保护隐私。 同一网络上的其他人和网络运营方看不到你访问的内容。
  • 服务器由你自己掌控。 服务部署在你自己的 VPS 上,不经过任何第三方 VPN 服务商,数据只在你的设备和你的服务器之间传输。
  • 默认安全的配置。 协议之间的密钥各自独立、随机生成;推荐的 IP 证书让客户端正常校验服务器身份,防止中间人攻击。

请在遵守所在地法律法规和服务器提供商服务条款的前提下使用。

特性

  • 不依赖本机的 ssh 命令:内置纯 JS 的 SSH 客户端(ssh2),支持密码登录和密钥登录。
  • 两种用法:在设置页点按钮,或者直接对 agent 说“帮我装个节点”。
  • 五种协议可选:VLESS Reality、Hysteria2(默认)、TUIC v5、AnyTLS、Shadowsocks 2022。
  • 免域名的正规证书:可选 Let's Encrypt 为服务器 IP 签发的证书,所有客户端都能正常校验证书。

使用

用你启动 dsh 的同一种方式安装。profile 名就是启动 dsh 时 --profile 后面的名字;用 dsh web 启动的话就是 web:

# 用 npx 运行 dsh 的
npx @deepseek-ai/dsh plugin --profile web add dsh-vpn
# 全局安装了 dsh 的
dsh plugin --profile web add dsh-vpn

装好后重启 dsh,点左下角「设置」,左侧菜单里的「VPN 设置」就是本插件的设置页(dsh 0.1.5 和 0.1.7 相同)。

在 VPN 设置里:

  1. 填写服务器 IP、SSH 端口、用户名、密码,点「保存」和「测试连接」。服务器只允许密钥登录的,见下面的「密钥登录」。
  2. 勾选要安装的协议,选择证书类型(推荐「IP 证书」),保存后点「安装 / 更新」。
  3. 在「节点二维码」里点「刷新二维码」,用手机或电脑上的客户端扫码导入。
  4. 服务器防火墙的端口由插件自动放行,不用手动操作;安装完成后提示框会列出放行了哪些端口。

密钥登录:服务器只允许密钥登录时,把「登录方式」选成「密钥」。插件按这个顺序尝试登录,哪把被服务器认可就用哪把:

  1. 你自己粘贴的私钥(展开「改用我自己已有的私钥」,支持带密码短语的私钥);
  2. 本机已有的钥匙:~/.ssh/config(含 config.d)里为这台服务器配置的 IdentityFile,dsh-vps-manager 的 ~/.ssh/dsh_vps_ed25519,以及 ~/.ssh/id_ed25519、id_ecdsa、id_rsa;
  3. 插件的专用钥匙(纯 JS 生成,不需要本机的 ssh-keygen)。

已经用 dsh-vps-manager 管理的服务器不需要再放任何公钥:它的钥匙已经在服务器上。填好 IP,「登录方式」选「密钥」,页面会列出本机找到的钥匙,点这张卡片右上角的「使用」就登录了(不用先保存,登录成功后自动保存)。卡片随后一直显示「已登录:用哪把钥匙登录 用户@服务器」,之后安装、检查和刷新二维码都优先用这把钥匙;改了 IP、端口或用户名,登录状态自动作废。本机钥匙都不被认可时,再把页面上显示的专用钥匙公钥放到服务器上(服务商后台的「SSH 密钥」,或在能登录的服务器上执行页面给出的一行命令)。私钥只在本机 dsh 里读取,不会发给页面;带密码短语的本机私钥会跳过。用非 root 用户时,「sudo 密码」一栏填该用户的 sudo 密码;root 或免密 sudo 不用填。

找回已有节点:重装过 dsh 或 dsh-vpn 后,本地保存的设置会丢失,但 VPS 上的节点还在运行。在 VPN 设置里填好服务器 IP、端口、用户名和密码(或选密钥登录),不用先保存,直接点登录方式下面的「检查已有安装」:插件登录服务器读取仍在运行的节点,显示原来的二维码(链接和以前完全一样,已经导入手机或电脑客户端的配置继续可用),按服务器上的实际情况勾选协议和证书类型,并自动保存设置。登录失败时什么都不保存,填的内容也不会被清掉。

页面第一行显示插件版本,有新版本时旁边会提示,点「更新」即可升级插件,重启 dsh 后生效(需要 dsh 0.2 及以上;更早的版本请在「设置 → 插件」中更新)。为了供应链安全,发布不足 24 小时的新版本会等满 24 小时再提供更新。

语言

整个插件的语言跟随 dsh 的界面语言(「设置 → 通用设置 → 语言」),目前支持 dsh 提供的中文和 English:

  • 设置页切换语言后立即生效。
  • agent 安装、卸载前的审批提示,以及 agent 收到的提示,也使用同一种语言。浏览器端会把 dsh 当前的界面语言告诉插件,插件把它保存下来,dsh 重启后仍然沿用。
  • 只有从来没有打开过 dsh 网页界面时(例如纯命令行运行),才临时使用电脑的系统语言。

防火墙

安装时插件会检测 VPS 上启用的防火墙,自动放行所选协议的端口(使用 IP 证书时还有 TCP 80):

防火墙做法
ufwufw allow
firewalld放行端口(永久规则和运行时规则都加)
iptables(如 Oracle Cloud 镜像自带的 REJECT 规则)在 INPUT 链最前面插入放行规则,带 dsh-vpn 标签
nftables(原生规则集)在各个 input 链插入放行规则,带 dsh-vpn 标签
没有启用防火墙不做任何改动
  • 规则写在 /etc/dsh-vpn/firewall.sh 里,服务每次启动都会重新应用,所以 iptables/nftables 规则重启后也还在。
  • 重新安装时,先关闭上次放行的端口,再放行新的,所以取消勾选的协议端口会被关掉。卸载时会删除插件添加的所有规则。
  • 插件只添加和删除自己的规则,从不启用防火墙、修改默认策略或改动 SSH 端口。
  • 云服务商的安全组(阿里云、腾讯云、AWS 等)在服务器外部,只能在服务商控制台修改,插件改不了;如果有安全组,仍需在控制台放行同样的端口。

证书

类型适合客户端校验
自签证书(默认)不想开放 80 端口Hysteria2 锁定证书指纹;TUIC 和 AnyTLS 的链接无法锁定,客户端会跳过校验
IP 证书(推荐)大多数情况所有协议都正常校验证书,不需要域名

IP 证书由 sing-box 1.14 内置的 ACME 向 Let's Encrypt 申请(2026 年起正式提供),通过 80 端口完成 HTTP 验证。证书有效期 6 天,由 sing-box 自动续期。

  • 签发失败(常见原因是 80 端口没开):自动退回自签证书,节点仍可使用,页面会提示原因。
  • 80 端口被其他程序占用:直接拒绝,不改动正在运行的节点。
  • 「查看状态」会显示证书剩余时间;剩余不到 24 小时仍未续期时会发出警告,因为证书过期后客户端将无法连接。

安全设计

方面做法
密码和私钥存在 dsh 凭据库($DSH_HOME/.credentials.yaml,权限 0600),不写进配置文件;浏览器只能写入,读不回来(专用钥匙只向页面提供公钥)
登录方式只用你选定的一种:选了密钥就只用密钥,不会退回密码;不使用键盘交互登录或 ssh-agent
接口鉴权设置页的接口挂在 dsh 自己的 /api 下,复用 dsh 的登录 cookie 和防跨站、防 DNS rebinding 检查
主机指纹首次连接时记录 SSH 主机指纹,之后指纹变化就拒绝连接,防止中间人截获密码
sudo非 root 用户用 sudo -S:密码只经 stdin 传入,不会出现在命令行,也不会传给脚本
agent 操作agent 安装或卸载前会弹出审批,写明目标服务器、协议,以及是否重新生成密钥
证书推荐用 IP 证书,所有协议都正常校验;自签模式下 Hysteria2 锁定指纹,TUIC 和 AnyTLS 会标注“需跳过证书校验”

组成

路径作用
scripts/vpn.sh在服务器上运行的安装脚本,也可以单独使用:ssh vps 'sudo bash -s -- install --protocols reality,hy2' < scripts/vpn.sh
src/ssh.ts / src/remote.tsSSH 连接、主机指纹锁定、上传并执行脚本
src/core.ts统一的操作入口(设置页和 agent 共用),同一时间只执行一个操作
src/settings.ts / src/credential-store.ts服务器设置的校验和存储
src/api.ts设置页调用的 /api/dsh-vpn/* 接口
src/index.tsagent 工具 vpn_install / vpn_status / vpn_links / vpn_uninstall,以及执行前的审批
src/client/浏览器端:设置弹窗里的「VPN 设置」一栏、二维码
src/skill.ts + assets/vpn-ops.mdvpn-ops 技能:操作流程和排障

远端落盘位置

  • /usr/local/bin/sing-box
  • /etc/dsh-vpn/:state.env(密钥、端口、已选协议、证书类型)、config.json、cert/(自签证书)、acme/(IP 证书,由 sing-box 维护)
  • /etc/systemd/system/dsh-vpn.service
  • /etc/sysctl.d/99-dsh-vpn.conf:开启 BBR

开发与测试

pnpm install
pnpm test            # 单元测试(进程内的假 SSH 服务器,不联网)
pnpm build           # lib/:宿主端 tsc 转译 + 浏览器端 esbuild 打包
DSH_SRC=/path/to/deepseek-harness pnpm typecheck   # 对照 dsh 源码做宿主端和浏览器端的类型检查

build 用 esbuild 把 ssh2 打包进 lib/,所以发布到 npm 的包没有任何运行时依赖,也就没有安装脚本。这是必须的:dsh 自带的 pnpm 11 在依赖的安装脚本被跳过时会让 dsh plugin add 直接失败。被打包的第三方库的许可证见 THIRD_PARTY_NOTICES.md。

npm 上的 @deepseek-ai/* 包版本过旧,所以 build 不做类型检查,类型检查对照 dsh 源码单独进行。

端到端测试会在目标机器上安装再卸载,并用 sing-box 客户端实测每种协议的连通性。本地可以用 Lima 虚拟机:

limactl start --name=vps --vm-type=vz --network=vzNAT --set '.mounts=[]' template:ubuntu-24.04
# 在虚拟机里开启 sshd 的密码登录并设置密码,然后:
DSH_VPN_E2E_HOST=<测试虚拟机 IP> DSH_VPN_E2E_USER=root DSH_VPN_E2E_PASSWORD=… pnpm test:e2e

防火墙测试会依次启用 ufw、firewalld、iptables、nftables,只能在测试虚拟机上运行:

DSH_VPN_E2E_FIREWALL=1 DSH_VPN_E2E_HOST=… DSH_VPN_E2E_USER=root DSH_VPN_E2E_PASSWORD=… pnpm test:e2e

IP 证书的测试需要一个本地 ACME 服务器,用 Let's Encrypt 官方的 Pebble 模拟。只能在测试虚拟机上运行,因为它会把 Pebble 的根证书加入系统信任:

ssh 测试机 'sudo bash -s' < tests/e2e/pebble-setup.sh
DSH_VPN_E2E_ACME=https://localhost:14000/dir DSH_VPN_E2E_HOST=… pnpm test:e2e

在插件配置里设置 acmeProvider,就可以让插件改用 Pebble 或其他 ACME 服务器。

发布

推送与 package.json 版本号一致的标签,GitHub Actions 会先跑测试,再发布到 npm。需要在仓库 Secrets 里配置 NPM_TOKEN。仓库是私有的,npm 不支持为私有仓库生成来源证明(provenance),所以发布时不带来源证明:

git tag v0.1.0 && git push origin v0.1.0

TODO

  • SSH 私钥登录
  • 导出客户端配置文件(sing-box / mihomo)和订阅链接
  • 可自定义 Reality 的 SNI、协议端口
  • 证书使用自己的域名(DNS 验证:Cloudflare / 阿里云)
  • IPv6 的 IP 证书(目前只在 IPv4 上验证过)
  • 支持 OpenRC(Alpine)
  • 支持 GitHub 下载镜像
  • 在真实 VPS 上跑端到端测试(Debian 12 / Ubuntu 24.04 / Rocky 9)