一个面向所有人的本地密码管理器
pm-team 中提供完整的 RBAC、部门、审批工作流和共享保险库。go build -o pm .
pm setup # initialize vault and choose security profile
pm unlock # start a session
pm add # add a secret (interactive)
pm get github # fuzzy search and retrieve
pm lock # end session
团队版:
cd team
go build -o pm-team .
APM 支持 25 种结构化密钥类型,具有经过验证的字段和类型特定的显示逻辑:
| # | 类型 | # | 类型 |
|---|---|---|---|
| 1 | 密码 | 14 | Docker Registry |
| 2 | TOTP | 15 | CI/CD 密钥 |
| 3 | 政府证件 | 16 | 安全笔记 |
| 4 | 医疗记录 | 17 | 恢复代码 |
| 5 | 旅行信息 | 18 | 证书 |
| 6 | 联系人 | 19 | 银行信息 |
| 7 | Wi-Fi | 20 | 文档 |
| 8 | API 密钥 | 21 | 软件许可证 |
| 9 | 令牌 | 22 | 法律合同 |
| 10 | SSH 密钥 | 23 | 照片 |
| 11 | SSH 配置 | 24 | 音频 |
| 12 | 云凭证 | 25 | 视频 |
| 13 | Kubernetes |
安全
standard、hardened、paranoid、legacypm watchtower):0–100 安全评分,涵盖弱密码、重复使用、过期、已泄露(可选加入,k-匿名)和已暴露的密码、即将过期的项目、缺失的双因素认证和通行密钥、有风险的密钥和设置检查,以及逐项信任评分和活动审查保险库
TOTP
pm totp github云同步
.apmignore 用于按提供商过滤条目会话
MCP 服务器
read、secrets、write、admin恢复
| 因素 | 命令 |
|---|---|
| 邮件 OTP | pm auth email |
| 恢复密钥 | pm auth recover |
| 法定份额(Shamir) | pm auth quorum-setup |
| WebAuthn 通行密钥 | pm auth passkey register |
| 一次性恢复代码 | pm auth codes generate |
导入 / 导出
| 格式 | 导入 | 导出 |
|---|---|---|
| JSON | pm import json | pm export json |
| CSV | pm import csv | pm export csv |
| TXT | pm import txt | pm export txt |
策略引擎
name: corporate-standard
password_policy:
min_length: 14
require_uppercase: true
require_numbers: true
require_symbols: true
rotation_policy:
rotate_every_days: 90
notify_before_days: 14
pm policy load ./policies/
团队版(pm-team)
APM 浏览器扩展可填充登录信息、在所属网站上提供一次性验证码、保存新的登录信息,并创建和使用通行密钥(passkey)。它始终无法看到你的主密码或通行密钥的私钥。它通过一个由 APM 在你本机 127.0.0.1:41417 上提供的小型桥接服务进行通信(可设置 APM_BRIDGE_PORT 以使用其他端口)。
访问保险库的三种方式
pm extension link。它会将 pm 注册为各 Chromium 浏览器(Chrome、Edge、Brave、Arc、Vivaldi、Chromium)的原生消息传递主机,此后只要应用关闭,浏览器便会自行启动 pm。pm extension serve 并保持其打开。它提供与桌面应用相同的 API,并在每次解锁、锁定和配对请求发生时显示出来。pm extension link # once per computer; confirm the code the extension shows
pm extension serve # unlocks with your CLI session, or asks for the master password
pm extension serve --locked # starts locked; unlock from the extension
pm extension serve --idle 5m # locks after 5 minutes without browser activity (default 15m, 0 turns it off)
pm extension serve 在保险库解锁或锁定时会打印一行信息。按 Ctrl+C 停止它;保险库密钥会从内存中清除。如果端口已被占用,它会退出并提示你 APM 应用可能已经在提供该扩展服务。
配对浏览器
K7M-2QX。pm extension link 或 pm extension serve 会在终端中询问,例如 Connect Chrome on macOS? Code K7M-2QX [y/N]。请求会在 2 分钟后过期,且同一时间只能有一个请求等待处理。当 pm extension serve 未在终端中运行时,它会自行拒绝请求。若要改为手动配对,请运行 pm extension token --show,并将令牌粘贴到扩展的手动配对字段中。
命令
| 命令 | 作用 |
|---|---|
pm extension link [--browser chrome,edge] [--no-wait] | 允许浏览器在桌面应用关闭时为扩展启动 pm |
pm extension unlink | 阻止浏览器启动 pm。配对关系会保留 |
pm extension status [--port N] | 显示哪些浏览器已链接、当前是什么在提供扩展服务、保险库的锁定状态和条目数量,以及令牌指纹 |
pm extension serve [--port N] [--locked] [--idle 15m] | 从此终端提供扩展服务,直到按 Ctrl+C |
pm extension token [--show] | 打印配对令牌,除非指定 --show,否则会掩码显示 |
pm extension rotate | 替换配对令牌。每个已配对的浏览器都必须重新配对。正在运行的桥接会在下一次请求时获取新令牌 |
pm totp link <entry> <domain> | 将一次性代码链接到某个站点,以便扩展在该站点提供它 |
pm totp unlink <entry> [domain] | 移除一次性代码的站点链接 |
pm get 会显示某个登录项拥有的通行密钥以及链接到它的一次性代码,而 pm totp 会显示每个代码所链接的站点。
桥接如何保持私密
127.0.0.1,并且只应答发往 127.0.0.1 或 localhost 的请求,从而阻止 DNS 重绑定。Origin 为网页的请求。只有 chrome-extension://、moz-extension:// 和 safari-web-extension:// 来源会获得 CORS 头。bridge_token 里,并以恒定时间进行比较。每个登录项对应多个网站
登录项将其主地址保存在 website 中,其他地址保存在 urls 中,在桌面应用中显示为“其他网站”。扩展会在匹配其中任一地址的页面上提供该登录项。默认情况下,匹配是指相同的可注册域名,因此 accounts.google.com 和 mail.google.com 都会匹配 google.com。
pm totp link <entry> <domain> 对一次性代码执行相同操作。网站徽标
桌面应用和扩展会显示每个登录项自己的徽标,而不是其首字母。APM 会自行从站点本身获取徽标,绝不会请求第三方 favicon 服务,因为那会泄露你保险库中的每个站点。
www. 或端口。localhost、IP 地址、.local、.internal 以及不含点的名称永远不会被获取。https://<host>/(最多 512 KiB),选取页面声明的最佳图标(先是 apple-touch-icon,然后最大的 PNG,再是 SVG),并回退到 https://<host>/favicon.ico。仅使用 HTTPS,最多 3 次重定向,每个站点 6 秒,图像最大 256 KiB,不使用 Cookie。解析到回环、私有、链路本地或 CGNAT 范围的地址会被拒绝。请求直接发往站点,不经过系统代理。pm extension serve 正在运行时,最多同时处理 4 个站点。失败的站点在 3 天后重试;徽标在 30 天后刷新。icons/(macOS 上为 ~/Library/Application Support/apm/icons,Linux 上为 ~/.config/apm/icons,Windows 上为 %AppData%\apm\icons)。每个文件以其主机名的 SHA-256 命名,最多保留 2000 个。缓存未加密:图像旁的每个 .json 文件都标明了其主机名,因此任何能读取你配置目录的人都能看到哪些站点有徽标。APM/<version> (+icon))。不涉及你的账户信息。siteIcons,pm extension serve 也会遵循该设置),并选择“清除图标缓存”以删除缓存。设置 APM_ICONS_OFFLINE=1 可阻止某个进程的所有获取操作,例如在测试或 CI 中。已缓存的徽标仍会显示,直到你清除它们。| 配置文件 | Argon2 内存 | 迭代次数 | 并行度 | 使用场景 |
|---|---|---|---|---|
standard | 64 MB | 3 | 2 | 大多数机器 |
hardened | 256 MB | 5 | 4 | 工作站(≥8 GB RAM) |
paranoid | 512 MB | 6 | 4 | 服务器(≥16 GB RAM) |
legacy | PBKDF2 | 600,000 | 1 | 向后兼容 |