网淘吧来吧,欢迎您!

Proton Pass CLI技能使用说明

2026-04-01 新闻来源:网淘吧 围观:14
电脑广告
手机广告

Proton Pass 命令行界面

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

安装

快速安装

macOS/Linux:

Proton Pass CLI

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

身份验证

网页登录(推荐)

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

pass-cli login
# Open the URL displayed in your browser and complete authentication

交互式登录

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

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

用于自动化的环境变量

# Credentials as plain text (less secure)
export PROTON_PASS_PASSWORD='your-password'
export PROTON_PASS_TOTP='123456'
export PROTON_PASS_EXTRA_PASSWORD='your-extra-password'

# Or from files (more secure)
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          # Show session info
pass-cli test          # Test connection

注销

pass-cli logout        # Normal logout
pass-cli logout --force  # Force local cleanup if remote fails

保险库管理

列出所有保险库

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

创建保险库

pass-cli vault create --name "Vault Name"

更新保险库

# By share ID
pass-cli vault update --share-id "abc123def" --name "New Name"

# By name
pass-cli vault update --vault-name "Old Name" --name "New Name"

删除保险库

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

# By share ID
pass-cli vault delete --share-id "abc123def"

# By name
pass-cli vault delete --vault-name "Old Vault"

分享保险库

# Share with viewer access (default)
pass-cli vault share --share-id "abc123def" colleague@company.com

# Share with specific role
pass-cli vault share --vault-name "Team Vault" colleague@company.com --role editor

# Roles: viewer, editor, manager

管理保险库成员

# List members
pass-cli vault member list --share-id "abc123def"
pass-cli vault member list --vault-name "Team Vault" --output json

# Update member role
pass-cli vault member update --share-id "abc123def" --member-share-id "member123" --role editor

# Remove member
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 "My Vault" "member_share_id_xyz"

项目管理

列出项目

# List from specific vault
pass-cli item list "Vault Name"
pass-cli item list --share-id "abc123def"

# List with default vault (if configured)
pass-cli item list

查看项目

# By IDs
pass-cli item view --share-id "abc123def" --item-id "item456"

# By names
pass-cli item view --vault-name "MyVault" --item-title "MyItem"

# Using Pass URI
pass-cli item view "pass://abc123def/item456"
pass-cli item view "pass://MyVault/MyItem"

# View specific field
pass-cli item view "pass://abc123def/item456/password"
pass-cli item view --share-id "abc123def" --item-id "item456" --field "username"

# Output format
pass-cli item view --share-id "abc123def" --item-id "item456" --output json

创建登录项目

# Basic login
pass-cli item create login \
  --share-id "abc123def" \
  --title "GitHub Account" \
  --username "myuser" \
  --password "mypassword" \
  --url "https://github.com"

# With vault name
pass-cli item create login \
  --vault-name "Personal" \
  --title "Account" \
  --username "user" \
  --email "user@example.com" \
  --url "https://example.com"

# With generated password
pass-cli item create login \
  --share-id "abc123def" \
  --title "New Account" \
  --username "myuser" \
  --generate-password \
  --url "https://example.com"

# Custom password generation: "length,uppercase,symbols"
pass-cli item create login \
  --vault-name "Work" \
  --title "Secure Account" \
  --username "myuser" \
  --generate-password="20,true,true" \
  --url "https://example.com"

# Generate passphrase
pass-cli item create login \
  --share-id "abc123def" \
  --title "Account" \
  --username "user" \
  --generate-passphrase="5" \
  --url "https://example.com"

登录模板

# Get template structure
pass-cli item create login --get-template > template.json

# Create from template
pass-cli item create login --from-template template.json --share-id "abc123def"

# Create from stdin
echo '{"title":"Test","username":"user","password":"pass","urls":["https://test.com"]}' | \
  pass-cli item create login --share-id "abc123def" --from-template -

模板格式:

{
  "title": "Item Title",
  "username": "optional_username",
  "email": "optional_email@example.com",
  "password": "optional_password",
  "urls": ["https://example.com", "https://app.example.com"]
}

创建SSH密钥项目

生成新的SSH密钥

# Generate Ed25519 key (recommended)
pass-cli item create ssh-key generate \
  --share-id "abc123def" \
  --title "GitHub Deploy Key"

# Using vault name
pass-cli item create ssh-key generate \
  --vault-name "Development Keys" \
  --title "GitHub Deploy Key"

# Generate RSA 4096 key with comment
pass-cli item create ssh-key generate \
  --share-id "abc123def" \
  --title "Production Server" \
  --key-type rsa4096 \
  --comment "prod-server-deploy"

# Key types: ed25519 (default), rsa2048, rsa4096

# With passphrase protection
pass-cli item create ssh-key generate \
  --share-id "abc123def" \
  --title "Secure Key" \
  --password

# Passphrase from environment
PROTON_PASS_SSH_KEY_PASSWORD="my-passphrase" \
  pass-cli item create ssh-key generate \
  --share-id "abc123def" \
  --title "Automated Key" \
  --password

导入现有SSH密钥

# Import unencrypted key
pass-cli item create ssh-key import \
  --from-private-key ~/.ssh/id_ed25519 \
  --share-id "abc123def" \
  --title "My SSH Key"

# Import with vault name
pass-cli item create ssh-key import \
  --from-private-key ~/.ssh/id_rsa \
  --vault-name "Personal Keys" \
  --title "Old RSA Key"

# Import passphrase-protected key (will prompt)
pass-cli item create ssh-key import \
  --from-private-key ~/.ssh/id_ed25519 \
  --share-id "abc123def" \
  --title "Protected Key" \
  --password

# Passphrase from environment
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 "Automated Import" \
  --password

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

# Create unencrypted copy
cp ~/.ssh/id_ed25519 /tmp/id_ed25519_temp
ssh-keygen -p -f /tmp/id_ed25519_temp -N ""

# Import
pass-cli item create ssh-key import \
  --from-private-key /tmp/id_ed25519_temp \
  --share-id "abc123def" \
  --title "My SSH Key"

# Securely delete temp copy
shred -u /tmp/id_ed25519_temp  # Linux
rm -P /tmp/id_ed25519_temp     # macOS

创建电子邮件别名

# Create alias
pass-cli item alias create --share-id "abc123def" --prefix "newsletter"
pass-cli item alias create --vault-name "Personal" --prefix "shopping"

# With JSON output
pass-cli item alias create --vault-name "Personal" --prefix "temp" --output json

更新项目

# Update single field
pass-cli item update \
  --share-id "abc123def" \
  --item-id "item456" \
  --field "password=newpassword123"

# By vault name and item title
pass-cli item update \
  --vault-name "Personal" \
  --item-title "GitHub Account" \
  --field "password=newpassword123"

# Update multiple fields
pass-cli item update \
  --share-id "abc123def" \
  --item-id "item456" \
  --field "username=newusername" \
  --field "password=newpassword" \
  --field "email=newemail@example.com"

# Rename item
pass-cli item update \
  --vault-name "Work" \
  --item-title "Old Title" \
  --field "title=New Title"

# Create/update custom fields
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"

分享项目

# Share with viewer access (default)
pass-cli item share --share-id "abc123def" --item-id "item456" colleague@company.com

# Share with editor access
pass-cli item share --share-id "abc123def" --item-id "item456" colleague@company.com --role editor

生成TOTP验证码

# Generate all TOTPs for an item
pass-cli item totp "pass://TOTP vault/WithTOTPs"

# Specific TOTP field
pass-cli item totp "pass://TOTP vault/WithTOTPs/TOTP 1"

# JSON output
pass-cli item totp "pass://TOTP vault/WithTOTPs" --output json

# Extract specific value
pass-cli item totp "pass://TOTP vault/WithTOTPs/TOTP 1" --output json | jq -r '.["TOTP 1"]'

密码生成与分析

生成密码

# Random password (default settings)
pass-cli password generate random

# Custom random password
pass-cli password generate random --length 20 --numbers true --uppercase true --symbols true

# Simple password without symbols
pass-cli password generate random --length 16 --symbols false

# Generate passphrase
pass-cli password generate passphrase

# Custom 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

分析密码强度

# Score a password
pass-cli password score "mypassword123"

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

JSON输出示例:

{
  "numeric_score": 51.666666666666664,
  "password_score": "Vulnerable",
  "penalties": [
    "ContainsCommonPassword",
    "Consecutive"
  ]
}

SSH代理集成

将SSH密钥加载至现有代理

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

# Load all SSH keys
pass-cli ssh-agent load

# Load from specific vault
pass-cli ssh-agent load --share-id MY_SHARE_ID
pass-cli ssh-agent load --vault-name MySshKeysVault

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

以SSH代理身份运行Proton Pass CLI

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

# Start agent
pass-cli ssh-agent start

# From specific vault
pass-cli ssh-agent start --share-id MY_SHARE_ID
pass-cli ssh-agent start --vault-name MySshKeysVault

# Custom socket path
pass-cli ssh-agent start --socket-path /custom/path/agent.sock

# Custom refresh interval (default 3600 seconds)
pass-cli ssh-agent start --refresh-interval 7200  # 2 hours

启动后,导出套接字:

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

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

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

# Enable auto-creation
pass-cli ssh-agent start --create-new-identities MySshKeysVault

# In another terminal
export SSH_AUTH_SOCK=$HOME/.ssh/proton-pass-agent.sock
ssh-add ~/.ssh/my_new_key
# Key is now automatically saved to 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:要检索的特定字段(必需)

示例

# By names
pass://Work/GitHub Account/password
pass://Personal/Email Login/username

# By IDs
pass://AbCdEf123456/XyZ789/password
pass://ShareId123/ItemId456/api_key

# Mixed (vault by name, item by ID)
pass://Work/XyZ789/password

# Custom fields (case-sensitive)
pass://Work/API Keys/api_key
pass://Production/Database/connection_string

常用字段

  • username- 用户名/登录名
  • password- 密码
  • email- 电子邮箱地址
  • 网址- 网站网址
  • 备注- 附加备注
  • TOTP- TOTP 密钥(用于双因素认证)
  • 支持任何名称的自定义字段(区分大小写)

规则

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

无效格式:

pass://vault/item              # Missing field name
pass://vault/item/             # Trailing slash
pass://vault/                  # Missing item and field

密钥注入

运行包含密钥的命令 (运行)

执行命令时,将 Proton Pass 中的密钥作为环境变量注入。

概要:

pass-cli run [--env-file FILE]... [--no-masking] -- COMMAND [ARGS...]

工作原理:

  1. 从当前进程和.env文件中收集环境变量
  2. 扫描pass://变量值中的URI
  3. 从Proton Pass解析密钥
  4. 将URI替换为实际的密钥值
  5. 在输出中屏蔽密钥(除非使用--no-masking
  6. 使用解析后的环境执行命令
  7. 转发stdin/stdout/stderr和信号(SIGTERM/SIGINT)

参数:

  • --env-file FILE- 从dotenv文件加载环境变量(可指定多个,按顺序处理)
  • --no-masking- 禁用输出中自动屏蔽密钥的功能
  • COMMAND [ARGS...]- 要执行的命令(必须放在--之后)

基本用法

# Set secret reference in environment
export DB_PASSWORD='pass://Production/Database/password'

# Run application with injected secret
pass-cli run -- ./my-app

使用.env文件

创建.env运行:

DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=admin
DB_PASSWORD=pass://Production/Database/password
API_KEY=pass://Work/External API/api_key

单一值中的多个密钥

pass-cli run --env-file .env -- ./my-app

# Multiple env files (later override earlier)
pass-cli run \
  --env-file base.env \
  --env-file secrets.env \
  --env-file local.env \
  -- ./my-app

密钥掩码

# Mix secrets with plain text
DATABASE_URL="postgresql://user:pass://vault/db/password@localhost/db"
API_ENDPOINT="https://api.example.com?key=pass://vault/api/key"

默认(掩码):

取消掩码:

pass-cli run -- ./my-app
# If app logs: API_KEY: sk_live_abc123
# Output shows: API_KEY: <concealed by Proton Pass>

使用参数运行

pass-cli run --no-masking -- ./my-app

CI/CD 集成

pass-cli run -- ./my-app --config production --verbose

将密钥注入模板(

#!/bin/bash
# Load production secrets
pass-cli run --env-file .env.production -- ./deploy.sh

注入处理模板文件,并使用类似 Handlebars 的语法将密钥引用替换为实际值。

概要:

工作原理:

pass-cli inject [--in-file FILE] [--out-file FILE] [--force] [--file-mode MODE]

  1. --in-file或标准输入读取模板查找
  2. {{ pass://vault/item/field }}模式从 Proton Pass 解析密钥
  3. 将引用替换为实际值
  4. 输出到
  5. --out-file--out-file或标准输出
  6. 设置文件权限(Unix)

参数:

  • --in-file-i- 模板文件路径(或标准输入)
  • --out-file-o- 输出写入路径(或标准输出)
  • --force-f- 不提示直接覆盖输出文件
  • --file-mode- 设置文件权限(Unix,默认:0600

模板语法

重要:使用双花括号{{ }}(不同于运行命令使用裸花括号)pass://)

# config.yaml.template
database:
  host: localhost
  username: {{ pass://Production/Database/username }}
  password: {{ pass://Production/Database/password }}

api:
  key: {{ pass://Work/API Keys/api_key }}
  secret: {{ pass://Work/API Keys/secret }}

# This comment with pass://fake/uri is ignored
# Only {{ }} wrapped references are processed

注入到标准输出

pass-cli inject --in-file config.yaml.template

注入到文件

pass-cli inject \
  --in-file config.yaml.template \
  --out-file config.yaml

# Overwrite existing
pass-cli inject \
  --in-file config.yaml.template \
  --out-file config.yaml \
  --force

从标准输入读取

cat template.txt | pass-cli inject

# Or with heredoc
pass-cli inject << EOF
{
  "database": {
    "password": "{{ pass://Production/Database/password }}"
  }
}
EOF

自定义文件权限

pass-cli inject \
  --in-file template.txt \
  --out-file config.txt \
  --file-mode 0644

JSON模板示例

{
  "database": {
    "host": "localhost",
    "password": "{{ pass://Production/Database/password }}"
  },
  "api": {
    "key": "{{ pass://Work/API/key }}"
  }
}

设置管理

配置持久化偏好设置:

查看设置

pass-cli settings view

设置默认保险库

# By name
pass-cli settings set default-vault --vault-name "Personal Vault"

# By share ID
pass-cli settings set default-vault --share-id "3GqM1RhVZL8uXR_abc123"

受影响的命令: 项目列表,项目查看,项目TOTP,项目创建,项目更新, 等等。

设置默认输出格式

pass-cli settings set default-format human
pass-cli settings set default-format json

受影响的命令: 项目列表,项目查看,项目动态口令,保险库列表,等等。

取消默认设置

pass-cli settings unset default-vault
pass-cli settings unset default-format

共享管理

列出所有共享

pass-cli share list
pass-cli share list --output json

显示所有与您共享的资源(保险库和项目)以及您的角色。

邀请管理

列出待处理邀请

pass-cli invite list
pass-cli invite list --output json

接受邀请

pass-cli invite accept --invite-token "abc123def456"

拒绝邀请

pass-cli invite reject --invite-token "abc123def456"

用户与会话信息

查看会话信息

pass-cli info

显示:发布轨道、用户ID、用户名、电子邮件。

查看详细用户信息

pass-cli user info
pass-cli user info --output json

显示:账户详情、订阅状态、存储使用情况。

测试连接

pass-cli test

验证会话有效性和API连通性。

更新

注意:仅适用于手动安装(非包管理器)。

更新至最新版本

pass-cli update
pass-cli update --yes  # Skip confirmation

更改发布渠道

# Switch to beta
pass-cli update --set-track beta
pass-cli update

# Switch back to stable
pass-cli update --set-track stable
pass-cli update

禁用自动更新检查

export PROTON_PASS_NO_UPDATE_CHECK=1

对象类型

共享

一个共享代表用户与资源(保管库或项目)之间的关系。定义访问权限和许可。

  • 保管库共享:访问整个保管库及其中的所有项目
  • 项目共享:仅访问单个特定项目
  • 角色:
    • 查看者:只读访问权限
    • 编辑者:读写权限,可以管理项目(但不能共享或管理成员)
    • 管理者:完全控制,包括共享和成员管理
    • 所有者:创建保管库的人,唯一可以删除保管库的角色

保管库

一个用于整理项目的容器。每个项目仅存在于一个保险库中。

项目类型

  • 登录信息:包含URL的用户名/密码凭证,支持TOTP
  • 笔记:安全文本笔记
  • 信用卡:支付卡信息(加密)
  • 身份信息:关于个人的个人信息
  • 别名:用于隐私保护的电子邮件别名
  • SSH密钥:用于身份验证的SSH私钥
  • WiFi:访问WiFi网络的凭证

注意:项目通过项目ID标识,但此ID仅在结合共享ID时才具有唯一性(共享ID + 项目ID = 全局唯一)。

最佳实践

安全性

  • 使用网页登录以获得最大兼容性(SSO、U2F)
  • 为每个账户生成唯一密码
  • 使用存储在Pass中的SSH密钥而非本地文件系统
  • 在共享系统上登出
  • 定期审查共享权限

组织管理

  • 为不同场景(工作、个人)创建独立保险库
  • 为条目和保险库使用描述性标题
  • 为常用保险库设置默认值
  • 配置默认输出格式(脚本用JSON,交互用易读格式)

自动化

  • 将凭证存储在文件中(而非环境变量)以增强安全性
  • 使用Pass URI实现程序化密钥访问
  • 利用JSON输出进行脚本编写
  • 在自动化清理中包含pass-cli logout命令共享管理

遵循最小权限原则(从查看者权限开始)

  • 持续协作优先使用保险库共享
  • 特定有限访问使用条目共享
  • Use item shares for specific, limited access
  • 定期审核成员和权限

Docker 使用

在 Docker 容器中运行时需要使用文件系统密钥存储(密钥环不可用):

# 1. Ensure logged out
pass-cli logout --force

# 2. Set filesystem key provider
export PROTON_PASS_KEY_PROVIDER=fs

# 3. Login as normal
pass-cli login

为何使用文件系统存储?

  • 容器无法访问内核密钥管理服务
  • 无头环境中 D-Bus 不可用
  • 文件系统存储是唯一选择

⚠️安全提示:密钥与加密数据并列存储。请确保容器环境的安全性。

故障排除

认证问题

# Check session status
pass-cli info
pass-cli test

# Re-authenticate
pass-cli logout
pass-cli login

网络问题

  • 验证互联网连接
  • 检查 Proton 域名的防火墙设置
  • 使用以下命令测试pass-cli test

权限错误

  • 验证您的角色:pass-cli share list
  • 确保您拥有执行该操作所需的权限
  • 联系保险库所有者调整权限

缺少资源

  • 检查您是否在正确的保险库中查找
  • 确认资源未被删除
  • 确认访问权限未被撤销
  • 检查待处理的邀请:pass-cli invite list

密钥引用解析错误

"无效的引用格式":

  • 确保格式为pass://vault/item/field
  • 检查尾部斜杠
  • 确认所有三个组件都存在

"密钥引用需要字段名":

  • 添加字段名:pass://vault/item/field(而非pass://vault/item

"未找到字段":

  • 确认字段存在:pass-cli item view --share-id <id> --item-id <id>
  • 检查字段名称拼写(区分大小写)

未找到引用:

  1. 检查保险库访问权限:pass-cli vault list
  2. 验证项目是否存在:pass-cli item list --share-id <id>
  3. 确认字段名称:pass-cli item view <uri>

配置

日志记录

# Levels: trace, debug, info, warn, error, off
export PASS_LOG_LEVEL=debug

注意:日志发送至标准错误输出(不会干扰管道/命令集成)。

会话存储

默认位置:

  • macOS:~/Library/Application Support/proton-pass-cli/.session/
  • Linux:~/.local/share/proton-pass-cli/.session/

覆盖:

export PROTON_PASS_SESSION_DIR='/custom/path'

密钥存储提供程序

控制加密密钥的存储方式PROTON_PASS_KEY_PROVIDER

1. 密钥环存储(默认,最安全)

export PROTON_PASS_KEY_PROVIDER=keyring  # or unset

使用操作系统安全存储:

  • macOS:macOS 钥匙串
  • Linux:基于内核的秘密存储(内核密钥环)
  • Windows:Windows 凭据管理器

工作原理:

  • 首次运行时生成随机的 256 位密钥
  • 存储在系统密钥环中
  • 后续运行时检索
  • 如果密钥环不可用但会话存在,出于安全考虑会强制登出

Linux 注意事项:使用内核密钥环(无需 D-Bus),可在无头环境中工作。重启后秘密信息会被清除。

Docker 限制:容器无法访问内核秘密服务。请改用文件系统存储。

2. 文件系统存储

⚠️警告:安全性较低 - 密钥与加密数据存储在同一位置。

export PROTON_PASS_KEY_PROVIDER=fs

将密钥存储在<session-dir>/local.key文件中,权限设置为0600

优点:

  • 适用于所有环境(无头模式、容器)
  • 重启后仍有效
  • 不依赖系统服务

使用场景:

  • Docker 容器
  • 开发/测试环境
  • 系统密钥环不可用时

3. 环境变量存储

⚠️警告:同一会话中的其他进程可看到密钥。

export PROTON_PASS_KEY_PROVIDER=env
export PROTON_PASS_ENCRYPTION_KEY=your-secret-key

PROTON_PASS_ENCRYPTION_KEY环境变量(必须设置且非空)派生加密密钥。

生成安全密钥:

dd if=/dev/urandom bs=1 count=2048 2>/dev/null | sha256sum | awk '{print $1}'

优势:

  • 跨所有环境可移植
  • 无文件系统/密钥环依赖
  • 用户控制密钥值
  • 适用于CI/CD、容器、无头环境

何时使用:

  • CI/CD流水线
  • 不希望文件系统持久化的容器环境
  • 自动化脚本
  • 需要显式控制加密密钥

遥测

禁用遥测:

export PROTON_PASS_DISABLE_TELEMETRY=1

或全局禁用:账户安全设置→ 禁用"收集使用诊断信息"

发送内容:匿名化使用数据(例如:"创建了笔记类型项目")-绝不包含个人/敏感数据。

环境变量

登录凭证(交互式登录)

export PROTON_PASS_PASSWORD='password'
export PROTON_PASS_PASSWORD_FILE='/path/to/file'
export PROTON_PASS_TOTP='123456'
export PROTON_PASS_TOTP_FILE='/path/to/file'
export PROTON_PASS_EXTRA_PASSWORD='extra-password'
export PROTON_PASS_EXTRA_PASSWORD_FILE='/path/to/file'

SSH密钥密码

export PROTON_PASS_SSH_KEY_PASSWORD='passphrase'
export PROTON_PASS_SSH_KEY_PASSWORD_FILE='/path/to/file'

更新检查

export PROTON_PASS_NO_UPDATE_CHECK=1

安装

export PROTON_PASS_CLI_INSTALL_DIR=/custom/path
export PROTON_PASS_CLI_INSTALL_CHANNEL=beta

常见工作流程

创建并填充新保险库

# Create vault
pass-cli vault create --name "Project Alpha"

# List to get share ID
pass-cli vault list

# Create login items
pass-cli item create login \
  --share-id "new_vault_id" \
  --title "API Key" \
  --username "api_user" \
  --generate-password \
  --url "https://api.example.com"

# Share with team
pass-cli vault share --share-id "new_vault_id" alice@team.com --role editor

导入和使用SSH密钥

# Import existing key
pass-cli item create ssh-key import \
  --from-private-key ~/.ssh/id_ed25519 \
  --vault-name "SSH Keys" \
  --title "GitHub Key"

# Load into SSH agent
pass-cli ssh-agent load --vault-name "SSH Keys"

# Or start Pass as SSH agent
pass-cli ssh-agent start --vault-name "SSH Keys"
export SSH_AUTH_SOCK=$HOME/.ssh/proton-pass-agent.sock

脚本化访问密钥

#!/bin/bash
# Automated login
export PROTON_PASS_PASSWORD_FILE="$HOME/.secrets/pass-password"
pass-cli login --interactive user@proton.me

# Retrieve secret
DB_PASSWORD=$(pass-cli item view "pass://Production/Database/password" --output json | jq -r '.password')

# Use secret
connect-to-db --password "$DB_PASSWORD"

# Cleanup
pass-cli logout

包含密钥的应用程序部署

#!/bin/bash
# Create .env.production with secret references
cat > .env.production << EOF
NODE_ENV=production
DATABASE_URL=pass://Production/Database/connection_string
API_KEY=pass://Production/API/key
STRIPE_SECRET=pass://Production/Stripe/secret_key
EOF

# Deploy application with secrets injected
pass-cli run --env-file .env.production -- npm start

# Or generate config file from template
pass-cli inject \
  --in-file config.yaml.template \
  --out-file config.yaml \
  --force

# Then run app with generated config
./app --config config.yaml

CI/CD流水线集成

#!/bin/bash
# Login with environment variable key storage
export PROTON_PASS_KEY_PROVIDER=env
export PROTON_PASS_ENCRYPTION_KEY="${CI_PASS_ENCRYPTION_KEY}"
export PROTON_PASS_PASSWORD_FILE=/run/secrets/pass-password

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

# Run tests with secrets
pass-cli run --env-file .env.test -- npm test

# Deploy with secrets
pass-cli run --env-file .env.production -- ./deploy.sh

# Cleanup
pass-cli logout

注意事项

  • 测试版状态:Proton Pass CLI目前处于测试版
  • 版本切换:仅适用于手动安装(不适用于包管理器)
  • 项目更新限制:无法通过CLI更新TOTP或时间字段
  • 密码短语建议:生成的密钥的密码短语为可选(已在保险库中加密)
  • SSH代理刷新:默认1小时,可使用--refresh-interval
  • 自定义Docker容器:PROTON_PASS_KEY_PROVIDER=fs)
  • Linux密钥环:使用内核密钥环(无D-Bus),重启时清除密钥
  • 遥测:仅匿名化(无个人数据),可禁用
  • 密钥掩码:自动在run命令输出中掩码密钥
  • 模板语法: inject命令需要{{ }}花括号,run命令使用裸pass://URI
  • 项目ID唯一性:项目ID仅在与共享ID结合时才唯一

命令参考速查表

认证:

  • login登出,信息,测试

保险库:

  • 保险库列表,保险库创建,保险库更新,保险库删除,保险库共享,保险库成员,保险库转移

项目:

  • 项目列表,项目查看,项目创建,项目更新,删除项目,分享项目,项目TOTP,项目别名,项目附件

密钥注入:

  • 运行- 以环境变量形式注入密钥来执行命令
  • 注入- 处理包含密钥引用的模板文件

密码:

  • 生成密码,密码评分

SSH:

  • 加载ssh-agent,启动ssh-agent

设置:

  • 查看设置,设置配置,设置取消

分享与邀请:

  • 分享列表,邀请列表,接受邀请,拒绝邀请

用户:

  • 用户信息

更新:

  • 更新

免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏

文章底部电脑广告
手机广告位-内容正文底部

相关文章

您是本站第394106名访客 今日有1篇新文章/评论