DeepSeek 官方 Agent 部署实录:公网零端口暴露的安全玩法
8 月 13 号,DeepSeek 把官方 Agent「DeepSeek Harness」开源了,仓库名 dsh,MIT 协议。三天,star 冲到 11 万+。
先说我为什么装它。我一直用 Claude Code、Codex 这类 CLI agent,干活在服务器上,方式是 VSCode SSH 连过去敲命令。能用,但不直观,想随手看一眼状态、发个任务,还得先连 SSH。dsh 不一样,它带网页界面,浏览器一开就是 agent,手机也能用。当然,上班写代码的时候,还是优先用上面几个CLI工具啦!
为什么放服务器
一条核心理由,24 小时在线。CLI agent 挂在本机,电脑一关就没了,放服务器上,任何时候打开浏览器它都在。顺便多设备共享,手机、笔记本、公司电脑都能连。
部署,三步
装它是我装过最省事的 agent。
第一步,装。 先 node -v 确认版本,官方要求 Node 22.19+ 或 24+(23.x 不在支持范围)。
npm install -g @deepseek-ai/dsh |
装完务必确认版本,dsh 在 npm 上的版本号一度是乱的,这个坑最后说。
第二步,改默认端口。 默认 3080 太常见,容易被扫描器顺手摸,我换成高位端口 13388。
mkdir -p /workspace/dsh && cd /workspace/dsh |
看到 dsh web: http://127.0.0.1:13388 就成了。注意地址是 127.0.0.1,dsh 默认只绑本机,这正是我们要的。
第三步,后台启动。 直接前台跑的话 SSH 一断服务就没了,用 systemd 挂住。先 command -v dsh 确认路径,全局 npm 装的一般在 /usr/bin 或 /usr/local/bin。
[Unit] |
sudo systemctl daemon-reload |
然后浏览器开 http://127.0.0.1:13388,设置里填 DeepSeek API Key,免重启就能用。
外面怎么访问,别直接暴露公网
这就是直接暴露到公网的问题,谁都可以直接访问你的网站,而且现在DSH还没有鉴权功能!
dsh 默认只监听 127.0.0.1,这是最正确的默认。它是能写文件、能跑命令的 agent,直接绑 0.0.0.0 等于把家门钥匙挂门口,端口扫描器 24 小时扫全网,开个公网端口几分钟就有扫描记录。dsh 官方把这条路焊死了,--host 0.0.0.0 直接拒绝,报错原话是 “it would expose remote code execution to the network”。
远程访问,我用 FRP 的 stcp 模式。原理一句话,公网上不开放任何目标端口,访问方和服务方各跑一个 frpc,拿同一个密钥握手,对上了才建隧道。相当于两个人对暗号,中间人只负责传话。
FRP 怎么装怎么配,我之前写过一篇 frpmgr 的教程,图形化客户端三步搞定,这里不重复了,直接看这篇,( https://www.wangwangit.com/2025-03-19-frpmgr-Windows%E5%86%85%E7%A9%BF%E9%80%8F%E7%A5%9E%E5%99%A8 )。
一个提醒,服务端 stcp 配在 [[proxies]] 段,访问方配在 [[visitors]] 段。网上很多老教程是 INI 格式,抄了 frpc 不认,认准官方文档 gofrp.org/en/docs/examples/stcp/ 的示例。
不想自己搭 frps,也有别的路
FRP 需要一台有公网 IP 的服务器当跳板。没有的话,这几个方案可以选,
- Cloudflare Tunnel。不用公网服务器,域名用你自己的 CF 域名。临时用一条命令,
cloudflared tunnel --url http://127.0.0.1:13388会生成一个随机公网 URL。注意这个 URL 是公网可达的,没有登录认证,适合临时分享,长期用要加 CF Access 做登录鉴权。 - Tailscale。把几台机器拉进一个虚拟局域网,装完像在同一内网,不需要任何公网端口。适合固定几个人自用。
- 花生壳这类国内工具。一样的内网穿透,国内访问快,免费版有限制。
我选 FRP stcp 的原因,是因为部署这个服务的是一台云电脑,用隧道的方式不够友好,而且我还有一些服务是需要对外使用的,所以还是选择了frp的方式。
最后
最后说感受。dsh 部署本身简单到没什么可写的,真正值钱的是怎么安全地把 agent 交到自己手上。浏览器随时能用,公网零端口暴露,你要是也把 dsh 搬上了服务器,或者有更好的穿透方案,评论区见。












