补充说明
op 是 1Password 官方提供的 CLI,可在脚本、CI 和服务器上访问保管库中的登录信息、API 凭据、SSH 密钥和一次性密码,避免把明文密码写进配置文件或环境变量文件。
安装后需要先认证:交互式环境执行 op signin,按提示完成登录;自动化环境推荐创建 Service Account,并通过 OP_SERVICE_ACCOUNT_TOKEN 环境变量认证。凭据可以用 op read 单独读取,也可以用 op inject 渲染模板、用 op run 注入到子进程环境中,后者不会把密钥落盘。
常见场景:配置文件里写 op://Vault/Item/field 引用,部署时用 op inject 生成真实配置;或者用 op run -- ./app 启动程序,让密钥只在运行时可见。注意 CLI 2.x 与 1.x 的子命令不同(例如 op item get 取代了 op get item),脚本应固定版本。
op 需要网络访问 1Password 服务;离线环境无法解密云端保管库。团队使用时应遵循最小权限原则,为 CI 单独创建只读的 Service Account。
语法
op [全局选项] 子命令 [参数...]
常用子命令
op signin 登录账号
op account list 列出已登录账号
op vault list 列出可见保管库
op item list 列出条目
op item get <条目> [--fields 字段]
op read "op://库/条目/字段" 读取单个字段
op inject -i 模板 -o 输出 渲染模板中的 op:// 引用
op run -- 命令 以注入的环境变量运行命令
op whoami 显示当前身份
选项
--account <shorthand>:指定使用的账号--format json:以 JSON 输出,便于交给jq处理--no-color:禁用彩色输出--cache=false:不使用本地缓存(共享机器上更安全)
实例
# 登录并确认当前身份
op signin
op whoami
# 列出所有保管库和其中的条目
op vault list
op item list --vault Private
# 只读取密码字段,适合管道传给其他命令
op read "op://Private/MySQL/password"
# 模板中写 {{ op://Private/MySQL/password }},渲染成真实配置
op inject -i app.conf.tpl -o app.conf
# CI 中用服务账号运行部署脚本,密钥只在子进程环境中存在
export OP_SERVICE_ACCOUNT_TOKEN="..."
op run -- ./deploy.sh