Mac用户可通过内置security工具命令行管理钥匙串,支持查找、添加、删除通用密码与Wi-Fi密码,以及审计钥匙串条目,全部操作需管理员验证,适用于自动化与批量维护场景。

如果您需要在Mac上通过命令行方式高效管理钥匙串中的密码、证书等敏感凭证,则可直接调用系统内置的security工具。该工具支持添加、查找、删除各类钥匙串条目,无需图形界面介入,适用于脚本自动化、远程维护及批量操作场景。
一、使用security查找已保存的通用密码
find-generic-password命令用于从指定钥匙串中检索通用类型密码条目(如App密钥、自定义服务凭证),返回加密存储的明文密码值。该操作需管理员身份验证,确保仅授权用户可解密访问。
1、打开“终端”应用,可通过Spotlight搜索“终端”或前往“应用程序 → 实用工具”启动。
2、执行以下命令,将YourServiceName替换为实际条目的标签名(区分大小写):
security find-generic-password -l "YourServiceName" -w
3、系统弹出身份验证窗口,输入当前账户的管理员密码;输入过程无字符回显,属正常安全机制。
4、验证成功后,终端直接输出明文密码,格式为:abc123xyz。
二、使用security向钥匙串添加通用密码
add-generic-password命令可将新凭证以加密形式写入指定钥匙串,支持设置账户名、服务名、密码内容及访问控制策略,适用于开发环境密钥注入或自动化部署。
1、在终端中输入以下命令(示例中账户名为当前用户,服务名为myapp-api-key,密码为hidden-secret):
security add-generic-password -a "$USER" -s "myapp-api-key" -w "hidden-secret"
2、若未指定钥匙串,默认写入“登录”钥匙串;如需指定其他钥匙串,追加参数 -D "login" 或 -D "system"。
3、命令执行后无显式提示,可通过find-generic-password命令验证是否写入成功。
4、如需限制仅特定应用可读取该条目,添加参数 -T "/Applications/MyApp.app/Contents/MacOS/MyApp"。
三、使用security查找并提取Wi-Fi网络密码
find-internet-password命令专用于检索iCloud钥匙串或本地钥匙串中保存的无线网络凭证,其条目类型为“internet password”,SSID作为服务名匹配依据,适用于快速恢复遗忘的Wi-Fi口令。
1、在终端中运行以下命令,将YourWiFiSSID替换为实际Wi-Fi名称(含空格时必须用英文双引号包裹):
security find-internet-password -s "YourWiFiSSID" -w
2、系统触发身份验证,要求输入管理员密码;验证通过后立即返回密码明文。
3、若返回“keychain password not found”,说明该Wi-Fi未被当前用户保存,或保存于其他钥匙串(如“系统”钥匙串),需配合 -D 参数重试。
4、输出结果格式为:MyWiFiPassw0rd!。
四、使用security删除指定钥匙串条目
delete-generic-password与delete-internet-password分别用于移除通用密码和网络密码类条目,避免残留过期或泄露凭证,操作不可逆,执行前需确认服务名准确无误。
1、确定待删除条目的服务名(可通过find-generic-password先查询确认)。
2、执行删除命令,例如删除服务名为legacy-db-auth的通用密码:
security delete-generic-password -s "legacy-db-auth"
3、系统将再次弹出身份验证窗口,输入管理员密码完成授权。
4、若删除成功,终端无输出;若失败,提示“The specified item could not be found in the keychain”,请核对服务名拼写与钥匙串归属。
五、使用security列出钥匙串中所有密码条目
list-keychains与dump-keychain组合可用于审计钥匙串内容,前者显示当前搜索路径中的钥匙串列表,后者导出指定钥匙串全部条目元数据,便于人工筛查或日志归档。
1、查看当前生效的钥匙串搜索列表:
security list-keychains
2、导出“登录”钥匙串全部条目摘要信息(不含明文密码):
security dump-keychain login.keychain-db | grep -E "(svce|acct|labl)"
3、若需导出完整结构(含加密字段),省略grep过滤,但注意输出量较大,建议重定向至文件:
security dump-keychain login.keychain-db > keychain_dump.txt
4、导出文件中每条记录的svce字段即为服务名,可据此定位具体条目进行后续操作。

















