在 Headscale 服务器上生成一个新的 **preauthkey**(也就是你说的“headscale密钥”,用于客户端免交互加入),最常用的命令如下: ### 1. 先确认你已经创建了 user(命名空间/用户组) ```bash # 查看现有用户 headscale users list # 如果还没有,创建一个(例如叫 myuser) headscale users create myuser ``` ### 2. 生成新的 preauthkey(最常用写法) ```bash # 基本用法(默认:1小时有效、只能用一次) headscale preauthkeys create --user myuser # 推荐:可重复使用 + 较长有效期(比如7天、30天、365天) headscale preauthkeys create --user myuser --reusable --expiration 7d # 或者更长的(适合家庭/长期使用) headscale preauthkeys create --user myuser --reusable --expiration 365d # 如果还想自动打上标签(tags),例如给服务器用的机器统一打 tag:server headscale preauthkeys create --user myuser --reusable --expiration 180d --tags tag:server,tag:infra ``` ### 如果你是用 Docker 运行的 Headscale(最常见情况) 几乎所有自建的人都用 docker,所以命令通常要这样写: ```bash # 方法1(推荐,比较清晰) docker exec -it headscale \ headscale preauthkeys create --user myuser --reusable --expiration 30d # 方法2(简写版) docker compose exec headscale \ headscale preauthkeys create -u myuser --reusable -e 30d ``` 执行完后会直接输出一串很长的 key,大概长这样: ``` hskey-auth-abc123def456ghi789jkl012mno345pqr678stu901vwx234yz ``` 把这串完整复制下来,就是你要的密钥。 ### 3. 客户端(Tailscale)怎么用这个密钥 ```bash # 在新设备/新节点上执行(替换成你自己的 Headscale 地址和密钥) sudo tailscale up \ --login-server=https://你的headscale域名或IP:8080 \ --authkey=刚刚生成的那个长key ``` ### 小技巧总结表 | 场景 | 推荐参数组合 | 命令示例(非docker) | |---------------------|--------------------------------------------|---------------------------------------------------| | 测试/临时用一次 | 默认(1h + 一次) | `headscale preauthkeys create --user myuser` | | 家庭长期使用 | 可重复 + 长过期 | `--reusable --expiration 365d` | | 服务器/自动化部署 | 可重复 + 标签 | `--reusable --expiration 180d --tags tag:server` | | 临时给朋友用 | 短过期 + 一次 | `--expiration 24h`(不加 --reusable) | 需要我帮你写个常用的脚本模板,或者你告诉我你的 user 叫什么、想要多久有效、可不可以重复用,我可以直接给你最合适的命令。