OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  proton-pass:管理 Proton Pass 保险库与账号项目

proton-pass:管理 Proton Pass 保险库与账号项目

 
  postgresql ·  2026-02-26 19:39:25 · 4 次点击  · 0 条评论  

名称: proton-pass
描述: 管理 Proton Pass 保险库、项目(登录信息、SSH 密钥、别名、笔记)、密码、SSH 代理集成以及将密钥注入应用程序。适用于使用 Proton Pass 进行密码管理、SSH 密钥存储、密钥注入(使用密钥运行命令、注入模板)、环境变量注入或生成安全密码的场景。支持保险库/项目的增删改查、共享、成员管理、SSH 代理操作、TOTP 生成、密钥引用(pass://vault/item/field)、模板注入以及使用密钥执行命令。


Proton Pass CLI

通过 Proton Pass CLI 进行全面的密码和密钥管理。管理保险库、项目、SSH 密钥、共享凭据、注入密钥,并与 SSH 工作流集成。

安装

快速安装

macOS/Linux:

curl -fsSL https://proton.me/download/pass-cli/install.sh | bash

Windows:

Invoke-WebRequest -Uri https://proton.me/download/pass-cli/install.ps1 -OutFile install.ps1; .\install.ps1

Homebrew (macOS)

brew install protonpass/tap/pass-cli

注意: 包管理器安装(如 Homebrew)不支持 pass-cli update 命令或通道切换。

验证安装

pass-cli --version

身份验证

Web 登录(推荐)

默认的身份验证方法,支持所有登录流程(SSO、U2F):

pass-cli login
# 在浏览器中打开显示的 URL 并完成身份验证

交互式登录

基于终端的身份验证(支持密码 + TOTP,但不支持 SSO 或 U2F):

pass-cli login --interactive user@proton.me

用于自动化的环境变量

# 明文凭据(安全性较低)
export PROTON_PASS_PASSWORD='your-password'
export PROTON_PASS_TOTP='123456'
export PROTON_PASS_EXTRA_PASSWORD='your-extra-password'

# 或从文件读取(更安全)
export PROTON_PASS_PASSWORD_FILE='/secure/password.txt'
export PROTON_PASS_TOTP_FILE='/secure/totp.txt'
export PROTON_PASS_EXTRA_PASSWORD_FILE='/secure/extra-password.txt'

pass-cli login --interactive user@proton.me

验证会话

pass-cli info          # 显示会话信息
pass-cli test          # 测试连接

注销

pass-cli logout        # 正常注销
pass-cli logout --force  # 如果远程失败,强制本地清理

保险库管理

列出保险库

pass-cli vault list
pass-cli vault list --output json

创建保险库

pass-cli vault create --name "保险库名称"

更新保险库

# 通过共享 ID
pass-cli vault update --share-id "abc123def" --name "新名称"

# 通过名称
pass-cli vault update --vault-name "旧名称" --name "新名称"

删除保险库

⚠️ 警告: 永久删除保险库及其所有项目。

# 通过共享 ID
pass-cli vault delete --share-id "abc123def"

# 通过名称
pass-cli vault delete --vault-name "旧保险库"

共享保险库

# 共享为查看者权限(默认)
pass-cli vault share --share-id "abc123def" colleague@company.com

# 共享为特定角色
pass-cli vault share --vault-name "团队保险库" colleague@company.com --role editor

# 角色:viewer, editor, manager

管理保险库成员

# 列出成员
pass-cli vault member list --share-id "abc123def"
pass-cli vault member list --vault-name "团队保险库" --output json

# 更新成员角色
pass-cli vault member update --share-id "abc123def" --member-share-id "member123" --role editor

# 移除成员
pass-cli vault member remove --share-id "abc123def" --member-share-id "member123"

转移保险库所有权

pass-cli vault transfer --share-id "abc123def" "member_share_id_xyz"
pass-cli vault transfer --vault-name "我的保险库" "member_share_id_xyz"

项目管理

列出项目

# 从特定保险库列出
pass-cli item list "保险库名称"
pass-cli item list --share-id "abc123def"

# 使用默认保险库列出(如果已配置)
pass-cli item list

查看项目

# 通过 ID
pass-cli item view --share-id "abc123def" --item-id "item456"

# 通过名称
pass-cli item view --vault-name "我的保险库" --item-title "我的项目"

# 使用 Pass URI
pass-cli item view "pass://abc123def/item456"
pass-cli item view "pass://我的保险库/我的项目"

# 查看特定字段
pass-cli item view "pass://abc123def/item456/password"
pass-cli item view --share-id "abc123def" --item-id "item456" --field "username"

# 输出格式
pass-cli item view --share-id "abc123def" --item-id "item456" --output json

创建登录项目

# 基础登录
pass-cli item create login \
  --share-id "abc123def" \
  --title "GitHub 账户" \
  --username "myuser" \
  --password "mypassword" \
  --url "https://github.com"

# 使用保险库名称
pass-cli item create login \
  --vault-name "个人" \
  --title "账户" \
  --username "user" \
  --email "user@example.com" \
  --url "https://example.com"

# 使用生成的密码
pass-cli item create login \
  --share-id "abc123def" \
  --title "新账户" \
  --username "myuser" \
  --generate-password \
  --url "https://example.com"

# 自定义密码生成:"长度,大写字母,符号"
pass-cli item create login \
  --vault-name "工作" \
  --title "安全账户" \
  --username "myuser" \
  --generate-password="20,true,true" \
  --url "https://example.com"

# 生成密码短语
pass-cli item create login \
  --share-id "abc123def" \
  --title "账户" \
  --username "user" \
  --generate-passphrase="5" \
  --url "https://example.com"

登录模板

# 获取模板结构
pass-cli item create login --get-template > template.json

# 从模板创建
pass-cli item create login --from-template template.json --share-id "abc123def"

# 从标准输入创建
echo '{"title":"测试","username":"user","password":"pass","urls":["https://test.com"]}' | \
  pass-cli item create login --share-id "abc123def" --from-template -

模板格式:

{
  "title": "项目标题",
  "username": "可选用户名",
  "email": "可选邮箱@example.com",
  "password": "可选密码",
  "urls": ["https://example.com", "https://app.example.com"]
}

创建 SSH 密钥项目

生成新的 SSH 密钥

# 生成 Ed25519 密钥(推荐)
pass-cli item create ssh-key generate \
  --share-id "abc123def" \
  --title "GitHub 部署密钥"

# 使用保险库名称
pass-cli item create ssh-key generate \
  --vault-name "开发密钥" \
  --title "GitHub 部署密钥"

# 生成带注释的 RSA 4096 密钥
pass-cli item create ssh-key generate \
  --share-id "abc123def" \
  --title "生产服务器" \
  --key-type rsa4096 \
  --comment "prod-server-deploy"

# 密钥类型:ed25519(默认), rsa2048, rsa4096

# 使用密码短语保护
pass-cli item create ssh-key generate \
  --share-id "abc123def" \
  --title "安全密钥" \
  --password

# 从环境变量获取密码短语
PROTON_PASS_SSH_KEY_PASSWORD="my-passphrase" \
  pass-cli item create ssh-key generate \
  --share-id "abc123def" \
  --title "自动化密钥" \
  --password

导入现有 SSH 密钥

# 导入未加密密钥
pass-cli item create ssh-key import \
  --from-private-key ~/.ssh/id_ed25519 \
  --share-id "abc123def" \
  --title "我的 SSH 密钥"

# 使用保险库名称导入
pass-cli item create ssh-key import \
  --from-private-key ~/.ssh/id_rsa \
  --vault-name "个人密钥" \
  --title "旧 RSA 密钥"

# 导入受密码短语保护的密钥(将提示输入)
pass-cli item create ssh-key import \
  --from-private-key ~/.ssh/id_ed25519 \
  --share-id "abc123def" \
  --title "受保护密钥" \
  --password

# 从环境变量获取密码短语
PROTON_PASS_SSH_KEY_PASSWORD="my-key-passphrase" \
  pass-cli item create ssh-key import \
  --from-private-key ~/.ssh/id_ed25519 \
  --share-id "abc123def" \
  --title "自动化导入" \
  --password

建议: 对于导入受密码短语保护的密钥,考虑先移除密码短语,因为密钥将在您的保险库中加密:

# 创建未加密副本
cp ~/.ssh/id_ed25519 /tmp/id_ed25519_temp
ssh-keygen -p -f /tmp/id_ed25519_temp -N ""

# 导入
pass-cli item create ssh-key import \
  --from-private-key /tmp/id_ed25519_temp \
  --share-id "abc123def" \
  --title "我的 SSH 密钥"

# 安全删除临时副本
shred -u /tmp/id_ed25519_temp  # Linux
rm -P /tmp/id_ed25519_temp     # macOS

创建邮箱别名

# 创建别名
pass-cli item alias create --share-id "abc123def" --prefix "newsletter"
pass-cli item alias create --vault-name "个人" --prefix "shopping"

# 使用 JSON 输出
pass-cli item alias create --vault-name "个人" --prefix "temp" --output json

更新项目

# 更新单个字段
pass-cli item update \
  --share-id "abc123def" \
  --item-id "item456" \
  --field "password=newpassword123"

# 通过保险库名称和项目标题
pass-cli item update \
  --vault-name "个人" \
  --item-title "GitHub 账户" \
  --field "password=newpassword123"

# 更新多个字段
pass-cli item update \
  --share-id "abc123def" \
  --item-id "item456" \
  --field "username=newusername" \
  --field "password=newpassword" \
  --field "email=newemail@example.com"

# 重命名项目
pass-cli item update \
  --vault-name "工作" \
  --item-title "旧标题" \
  --field "title=新标题"

# 创建/更新自定义字段
pass-cli item update \
  --share-id "abc123def" \
  --item-id "item456" \
  --field "api_key=sk_live_abc123" \
  --field "environment=production"

注意: 项目更新不支持 TOTP 或时间字段。请使用其他 Proton Pass 客户端进行这些操作。

删除项目

⚠️ 警告: 永久删除。

pass-cli item delete --share-id "abc123def" --item-id "item456"

共享项目

# 共享为查看者权限(默认)
pass-cli item share --share-id "abc123def" --item-id "item456" colleague@company.com

# 共享为编辑者权限
pass-cli item share --share-id "abc123def" --item-id "item456" colleague@company.com --role editor

生成 TOTP 代码

# 生成项目的所有 TOTP
pass-cli item totp "pass://TOTP 保险库/带TOTP的项目"

# 特定 TOTP 字段
pass-cli item totp "pass://TOTP 保险库/带TOTP的项目/TOTP 1"

# JSON 输出
pass-cli item totp "pass://TOTP 保险库/带TOTP的项目" --output json

# 提取特定值
pass-cli item totp "pass://TOTP 保险库/带TOTP的项目/TOTP 1" --output json | jq -r '.["TOTP 1"]'

密码生成与分析

生成密码

# 随机密码(默认设置)
pass-cli password generate random

# 自定义随机密码
pass-cli password generate random --length 20 --numbers true --uppercase true --symbols true

# 无符号的简单密码
pass-cli password generate random --length 16 --symbols false

# 生成密码短语
pass-cli password generate passphrase

# 自定义密码短语
pass-cli password generate passphrase --count 5
pass-cli password generate passphrase --count 4 --separator hyphens
pass-cli password generate passphrase --count 4 --capitalize true --numbers true

分析密码强度

# 评估密码
pass-cli password score "mypassword123"

# JSON 输出
pass-cli password score "MySecureP@ssw0rd*" --output json

JSON 输出示例:

{
  "numeric_score": 51.666666666666664,
  "password_score": "易受攻击",
  "penalties": [
    "包含常见密码",
    "连续字符"
  ]
}

SSH 代理集成

将 SSH 密钥加载到现有代理

将 Proton Pass SSH 密钥加载到您现有的 SSH 代理中:

# 加载所有 SSH 密钥
pass-cli ssh-agent load

# 从特定保险库加载
pass-cli ssh-agent load --share-id MY_SHARE_ID
pass-cli ssh-agent load --vault-name MySshKeysVault

前提条件: 确保已定义 SSH_AUTH_SOCK 环境变量。

将 Proton Pass CLI 作为 SSH 代理运行

启动 Proton Pass CLI 作为独立的 SSH 代理:

# 启动代理
pass-cli ssh-agent start

# 从特定保险库启动
pass-cli ssh-agent start --share-id MY_SHARE_ID
pass-cli ssh-agent start --vault-name MySshKeysVault

# 自定义套接字路径
pass-cli ssh-agent start --socket-path /custom/path/agent.sock

# 自定义刷新间隔(默认 3600 秒)
pass-cli ssh-agent start --refresh-interval 7200  # 2 小时

启动后,导出套接字:

export SSH_AUTH_SOCK=/Users/youruser/.ssh/proton-pass-agent.sock

自动创建 SSH 密钥项目(v1.3.0+)

自动保存通过 ssh-add 添加的 SSH 密钥:

# 启用自动创建
pass-cli ssh-agent start --create-new-identities MySshKeysVault

# 在另一个终端中
export SSH_AUTH_SOCK=$HOME/.ssh/proton-pass-agent.sock
ssh-add ~/.ssh/my_new_key
# 密钥现已自动保存到 Proton Pass!

SSH 故障排除

ssh-copy-id 因密钥过多而失败

强制密码认证:

ssh-copy-id -o PreferredAuthentications=password -o PubkeyAuthentication=no user@server

Pass URI 语法(密钥引用)

使用格式引用密钥:pass://vault/item/field

语法

pass://<vault-identifier>/<item-identifier>/<field-name>
  • vault-identifier: 保险库的共享 ID 或名称
  • item-identifier: 项目的 ID 或标题
  • field-name: 要检索的特定字段(必需)

示例

# 通过名称
pass://工作/GitHub 账户/password
pass://个人/邮箱登录/username

# 通过 ID
pass://AbCdEf123456/XyZ789/password
pass://ShareId123/ItemId456/api_key

# 混合(保险库通过名称,项目通过 ID)
pass://工作/XyZ789/password

# 自定义字段(区分大小写)
pass://工作/API 密钥/api_key
pass://生产/数据库/connection_string

常见字段

  • username - 用户名/登录名
  • password - 密码
  • email - 邮箱地址
  • url - 网站 URL
  • note - 附加备注
  • totp - TOTP 密钥(用于 2FA)
  • 任何名称的自定义字段(区分大小写)

规则

  • 所有三个组件(保险库/项目/字段)都是必需的
  • 支持带空格的名称
  • 解析区分大小写
  • 如果存在重复项,则使用第一个匹配项(建议使用 ID 以提高精确度)

无效格式:
```bash
pass://vault/item # 缺少字段名
pass://vault/item/

4 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor