UUID 和密码是一回事吗?各协议的凭证有什么不同
VMess 和 VLESS 用 UUID,Trojan 和 Shadowsocks 用密码,看起来是两种东西,泄露后果却完全一样。本文说明各协议凭证的形式差异、为什么 UUID 不能当成「不敏感的 ID」,以及分享配置前该抹掉什么。
本文目录(8 节 · 约 2 分钟) +
- 01 各协议用什么
- 02 为什么 UUID 容易被误解
- 03 一个额外的区别:能不能改
- 04 Shadowsocks 的特殊之处
- 05 TUIC 为什么要两个
- 06 泄露之后怎么办
- 07 分享配置前该抹掉什么
- 08 小结
一句话结论:形式不同,作用相同——它们都是「拿到就能用你的节点」的凭证。 UUID 长得像一个普通标识符,很多人因此以为它不敏感,这是个危险的误解。
各协议用什么
| 协议 | 凭证字段 | 形式 |
|---|---|---|
| VMess | id | UUID,如 11111111-2222-3333-4444-555555555555 |
| VLESS | id(URI 里在 @ 前面) | UUID |
| Trojan | password | 任意字符串 |
| Shadowsocks | password + cipher | 任意字符串 + 加密方式 |
| Hysteria2 | auth | 任意字符串 |
| TUIC | uuid + password | UUID + 密码,两者都要 |
为什么 UUID 容易被误解
UUID 在软件里的常见用途是「唯一标识符」——数据库主键、请求 ID、设备 ID。这些场合下它确实不敏感,泄露了也无所谓。
但在 VMess / VLESS 里,UUID 承担的是认证职责:服务端就认这一串,谁拿着谁就是合法用户。它的角色等同于密码,只是恰好长得像一个 ID。
所以:
- 截图分享配置时,UUID 和密码一样要抹掉
- 报 bug 贴样本时,UUID 要换成
xxx - 传到 GitHub 的配置文件里,UUID 不能留
一个额外的区别:能不能改
密码类(Trojan / SS / Hysteria2):你和服务端约定一个字符串即可,理论上想改就改(前提是两边同时改)。
UUID 类(VMess / VLESS):格式必须是合法 UUID,不能随便写个 mypassword。多数客户端会直接拒绝非 UUID 格式的 id。
这也是为什么自建时生成 UUID 要用工具而不是手打——手打很容易格式不对,而报错信息通常只说「认证失败」,不会告诉你是格式问题。
Shadowsocks 的特殊之处
SS 除了密码还需要 cipher(加密方式),两边必须一致。常见值 aes-256-gcm、chacha20-ietf-poly1305。
这意味着 SS 的「凭证」实际是密码 + 加密方式的组合。密码对但 cipher 不对,一样连不上,而且报错同样含糊。
用节点链接解析器解 ss:// 链接时,会把 cipher 单独列出来——它是 userinfo 里 Base64 编码的一部分,肉眼从链接上看不出来。
TUIC 为什么要两个
TUIC 同时需要 UUID 和密码,这是协议设计上的选择:UUID 用于标识用户,密码用于认证。相当于「用户名 + 密码」的组合,而不是单一凭证。
配置时两个都不能缺。
泄露之后怎么办
无论哪种形式,泄露的后果都一样:别人能用你付费买的节点,流量算在你头上。
- 机场的节点:去用户中心重置订阅链接。这会连带更换凭证,是最直接的处理
- 自建的节点:改服务端配置里的 UUID 或密码,然后同步更新所有客户端
顺带一提,订阅链接本身也是凭证,而且权限更大——它一次性包含所有节点的全部凭证,多数机场还会在响应头里返回你的流量和到期时间。所以在群里问「我这个订阅导入失败谁帮我看看」并附上链接,等于把整套账号交出去了。
分享配置前该抹掉什么
需要别人帮你看配置时,按这个清单脱敏:
id/uuid/password/auth→ 换成xxxserver→ 换成example.com- 订阅地址 → 干脆不要发,改发解码后的单条节点结构
- 节点名里如果带机场名和你的账号编号,也一并换掉
绝大多数解析和配置问题只跟格式有关,跟真实的服务器地址、密码毫无关系。对方要判断的是「这个字段为什么写错了」,不需要知道你的服务器在哪。
小结
- UUID 在 VMess / VLESS 里就是密码,别当成普通标识符
- SS 的凭证是「密码 + cipher」的组合,缺一不可
- TUIC 需要 UUID 和密码两个
- 泄露后重置订阅链接是最省事的处理;分享前一律脱敏
相关文章
订阅地址打开是一大串乱码,那到底是什么
在浏览器里打开机场订阅地址,看到的往往是一长串没有换行的字符。那不是加密,是 Base64 编码的节点清单。本文说明它的结构、为什么要编码、以及三种常见的订阅返回格式怎么区分。
规则写对了却不生效?多半是顺序放错了
Clash 的规则从上往下逐条匹配、命中即停,所以一条宽泛的规则放在前面,会让它后面所有具体规则永远不执行。本文说明正确的排列顺序、GEOIP 为什么必须靠后,以及怎么验证某个域名到底命中了哪条。
Reality 是什么,它和普通 TLS 差在哪
节点链接里出现 security=reality、pbk、sid 这些参数时,说明它用的是 Reality。本文说明它借用真实网站 TLS 特征的原理、为什么不需要自己的域名和证书,以及 pbk / sid / fp 各是什么。