macOS终端可用security命令查导钥匙串密码:1.查条目用find-internet-password -s;2.显明文加-w参数并授权;3.导全部互联网密码需复合命令逐条授权;4.导证书用find-certificate或export。

如果您需要在 macOS 中通过终端快速查找或导出钥匙串中存储的密码,而非依赖图形界面的“钥匙串访问”App,则可使用系统内置的 security 命令行工具。该工具支持对登录钥匙串及其他钥匙串进行查询、读取、添加和导出等操作,但需注意权限与密码授权机制。
一、查询指定服务的密码条目
该方法用于确认目标服务(如网站、App 或服务器)是否已在钥匙串中保存密码,并获取其账户名与属性信息。命令不直接显示密码明文,仅列出匹配项的元数据。
1、打开“终端”App。
2、输入以下命令并回车,将 example.com 替换为实际服务名称(如 github.com、wifi-ssid 或 app 名称):
security find-internet-password -s example.com -w
3、若该服务存在多个条目,可添加 -a 参数指定账户名进一步过滤,例如:security find-internet-password -s example.com -a user@example.com -w。
二、直接读取并显示密码明文
此操作会触发系统权限弹窗,要求输入当前用户登录密码以授权访问钥匙串。成功验证后,密码将以明文形式输出至终端。该行为受钥匙串访问控制策略约束,部分条目可能禁止命令行读取。
1、在终端中执行以下命令,其中 example.com 为服务标识符:
security find-internet-password -s example.com -w
2、在弹出的认证窗口中输入您的 Mac 登录密码。
3、密码明文将立即显示在下一行,无额外提示或格式包装。
三、导出钥匙串中所有互联网密码为文本列表
该方法不生成标准格式文件,而是将当前登录钥匙串中全部互联网密码条目的服务名、账户名及密码明文逐条打印,便于临时审计或迁移参考。每条记录包含三行:service、account、password。
1、运行以下复合命令:
security find-internet-password -g 2>&1 | grep -E "^(internet|account|password)" | sed 's/[^:]*: //'
2、系统将依次弹出若干次权限请求窗口,每次均需输入登录密码完成单条密码解密。
3、输出结果中,account 行对应用户名,password 行为明文密码,internet 行为服务标识。
四、导出指定证书或密钥为文件
当需将钥匙串中的证书(.cer)、私钥(.p12)或公钥(.pub)提取为独立文件用于调试或部署时,可使用 security export 子命令。该操作要求目标条目支持导出且未被标记为“不可导出”。
1、先列出登录钥匙串中所有证书条目及其持久化标识符(Persistent Reference):
security find-certificate -p login.keychain-db | openssl x509 -noout -subject
2、通过 security find-certificate -p 获取完整证书内容并重定向保存:
security find-certificate -p -t login.keychain-db > exported_cert.cer
3、导出含私钥的 PKCS#12 文件(需交互输入导出密码):
security export -k login.keychain-db -t identities -f pkcs12 -o exported_identity.p12

















