账号与激活
零配置激活、CI 与无人值守机器、离线时会发生什么,以及吊销一台设备到底意味着什么。
激活会把一台机器纳入你的账号名下。正常使用中你几乎不会手动执行它——它已经折叠进了第一次加密的流程里。
零配置激活
新机器上第一次调用 protect / protect-model / build 会一步完成登录(打开浏览器)+ 激活,然后加密:
shell
magiclock protect app.py # 第一次:登录 + 激活,然后加密
magiclock protect app.py # 之后每次:立即加密,没有任何提示显式命令
正常情况下你很少需要直接用到它们,但需要时它们都在:
shell
magiclock activate # 认证(打开浏览器)+ 把这台机器纳入账号
magiclock activate --no-browser # 打印链接 + 验证码,而不是打开浏览器
magiclock status # 这台机器的账号与激活状态
magiclock status --offline # 同上,但不与服务器做实时往返
magiclock deactivate # 移除这台机器(默认同时在服务端释放席位)
magiclock deactivate --local-only # 只在本地移除,不触碰服务器CI 与无人值守机器
用一个门户铸造的令牌代替打开浏览器:
shell
export MAGICLOCK_TOKEN=<来自你账号门户的令牌>
magiclock protect app.py # 非交互式完成配置,然后加密正式发行版的 CLI 已经内置了授权服务器地址,只有当你要指向非默认地址时才需要设置 MAGICLOCK_SERVER。
环境变量
| 变量 | 用于 | 作用 |
|---|---|---|
MAGICLOCK_TOKEN | activate,以及首次加密时的自动激活 | 非交互式登录用的 Bearer 令牌。 |
MAGICLOCK_SERVER | activate | 覆盖授权服务器地址(很少需要)。 |
MAGICLOCK_PASSPHRASE | protect/protect-model/run | --lock-passphrase 或便携 --passphrase 产物的非交互式口令。 |
MAGICLOCK_DECRYPT_KEY | run | 便携 --emit-key 产物中 run --key 的替代方式。 |
MAGICLOCK_NO_BROWSER | 任何认证流程 | 禁止自动打开浏览器(无图形界面的 Linux 也会自动检测到)。 |
MAGICLOCK_NO_OS_KEYRING | 所有命令 | 跳过操作系统钥匙串对本地凭据存储的额外包裹——在没有钥匙串服务的精简容器里很有用。 |
离线时会发生什么
加密(protect/protect-model/build)每次都会与授权服务器做一次实时复核。复核通过就没问题。如果网络不通:
| 情况 | 结果 |
|---|---|
| 服务器可达,授权有效 | 正常加密。 |
| 服务器不可达,且最近一次成功复核在 12 小时以内 | 借助离线宽限窗口继续加密。 |
| 服务器不可达,且还没有过成功复核(或宽限已用完) | 阻止,直到重新联网。 |
| 服务器可达但明确拒绝(设备被吊销、方案过期/取消) | 立即阻止——无论在线离线,这种情况都不给宽限。 |
解密与 magiclock run 完全不受以上任何情况影响。 它们只读取本地已经激活好的凭据——没有网络请求,不依赖服务器,永远如此。不管这台机器现在在线、离线,还是激活后就再也没联过网,都一样。
吊销与移除
magiclock deactivate(不加 --local-only)会通知服务器释放这台机器的席位,并阻止它加密任何新内容。它不会去追溯这台机器此前已经生成的产物——那些产物照常解密,因为解密从不查询服务器或任何吊销名单。如果一台机器丢失或被入侵,移除它能阻止它在你账号名下继续生成新的受保护产物;它不能追溯撤销这台机器之前已经生成的文件。