安全与远程访问

它把一个登录 shell 放到网上,所以门要按「路可能不安全」来做

01/ 03安全

公网访问

中间那台服务器只见密文,登录靠 passkey

在 README 里细看

frp、反代这类穿透,TLS 往往在中间那台 VPS 上解开。它被拿下,你的终端就全给人看了:每一次按键、登录凭据,还能改页面里的代码。

所以公网只走 herdr-relay:一台你自己的 VPS,按域名把加密流量原样转回你的电脑,TLS 在你的电脑上解开,中继手里没有任何能登录、能解密的东西。 再用一条 DNS 记录锁死「这个域名的证书只有你的电脑能签」,中继自己去签也签不出来。

所以鉴权这一层 herdr-web 自己做,按「这条路可能已经不安全」来做:

扫一次码

一次性配对码换一份 per-device 凭据,放 HttpOnly cookie。URL 里不留秘密。

服务端只存哈希

磁盘上没有任何能直接登录的明文,防止坏 agent 把你的凭证发出去。

能撤销

一条命令踢掉一台设备,下一个请求就 401。

中继只转密文

VPS 上没有证书私钥、没有设备表、没有 passkey,整台被拿下也只能断网,看不到你的终端。

herdr-web 的配对页:提示在机器上执行 herdr-web pair,可以用相机扫二维码或手输 8 位配对码
一台设备只见这页一次。只有坐在机器前的人能出码,网页上(包括已配过对的设备)都不行。
02/ 03安全

本地端口

agent 起的 localhost:7830,手机上也能打开,但要先过登录。

终端和对话里的 http://localhost:7830 点下去, 打开的是 https://7830.你的域名:herdr-web 把这台机器上那个端口代理出来。

先过登录

没登录就绕主站登一次,用的是同一套设备和 passkey。设备被撤销、该重验 passkey 了,子域名当场失效。

和主站隔开

被代理的是 agent 写的页面,放在单独的子域名上,拿不到主站的凭据,也调不了主站的接口。

别的站读不到

带着别的站来源的请求一律拒,同一个域名下的其它网站也读不到你本机开发服务的内容。

03/ 03安全

放在哪儿跑

没有域名、不用公网,局域网下也能连。

代价只是每台设备第一次点一下「继续访问」。嫌这一下麻烦, 加个域名走 C;出了门也想连,在一台 VPS 上跑中继走 D。 要手机连就必须有 TLS,herdr-web 已内置 ACME 走 DNS-01 认证,Cloudflare、AWS Route53、阿里云、腾讯云、华为云、DigitalOcean 六家都能签。 所以 NAT 后面、域名指到内网地址,照样签得出受信任证书。

档场景怎么用要准备什么授权方式
A只本机访问 127.0.0.1不用准备什么配对码(IP 下没有 passkey)
B局域网 · 用 IP访问局域网 IP不用准备什么,第一次点一下「继续访问」配对码(IP 下没有 passkey)
C局域网 · 用域名访问域名一个域名 + DNS 的 API token第一次配对码,后续 passkey
D公网在哪儿都访问域名域名 + DNS token,外加一台跑 herdr-relay 的 VPS第一次配对码,后续 passkey

Render diagnostics