手机审批器

agent 最有用的时候,是你放手让它自己跑的时候,而这恰恰也是没人在场点击对话框的时候。手机审批器就是用来接住这些请求的。

设置

  1. 在账户中的某台机器上,运行 keygrant devices add。
  2. 在手机上打开 app.keygrant.app,输入配对码,并为这部手机起个名字。
  3. 比对两边屏幕上的指纹,然后在机器上输入 yes。
  4. 可选:把该页面添加到主屏幕,这样它打开时就像一个 App。

工作流程

  1. 桌面对话框照常弹出。
  2. 如果 60 秒内无人响应,请求会转到你的手机上。卡片上会显示密钥名称、发起请求的会话以及完整命令。
  3. 你需要在大约两分钟内点击 Allow 或 Deny。结果会发回机器,只有当结果验证通过时,机器才会释放密钥。

在桌面上明确点击 Deny 即为最终结果,永远不会到达手机。

在你预计会有请求的时候,请保持该页面打开:它每隔几秒检查一次新请求。推送通知已在路线图中。

为什么中转服务器无法替你批准

审批器是一个在手机浏览器中用 WebCrypto 生成的密钥对,并被标记为不可导出:页面可以用它签名,但永远无法把它读出来。每一个审批结果都是对整个请求的哈希进行签名,包括密钥名称、命令和会话。机器在接受签名之前,会根据它实际持有的请求重新计算这个哈希。

因此,负责中转请求的服务器自己无法批准任何请求,也无法在你手机上显示一条命令、却为另一条命令释放密钥。机器也只接受它在配对时(或通过 keygrant devices trust)验证过的审批器给出的审批结果。

手机做不到什么

审批器永远不会收到 Secret Key 或任何密钥库密钥,服务器也会拒绝它访问任何持有密钥材料的内容。丢失的手机可以拒绝请求,但无法读取密钥。用 keygrant devices remove 移除它。

控制台运行在独立的子域名上,并启用了严格的内容安全策略(Content Security Policy),因此 keygrant.app 其他位置的脚本都无法接触到审批器的密钥。