最可靠方式是使用密码App并正确进入iCloud钥匙串路径;终端命令需指定钥匙串类型、严格匹配SSID大小写空格,且仅适用于本地存储的Wi-Fi密码。

Mac 上查看已保存 Wi-Fi 密码,最可靠的方式不是“高级操作”,而是选对路径+避开钥匙串权限陷阱。 macOS 从 Monterey(12.0)起就把 Wi-Fi 密码统一收口到 密码 App,但很多用户卡在身份验证失败、搜索不到条目、或终端命令报错——问题通常不出在“技术难度”,而在钥匙串类型、SSID 大小写/空格、以及系统版本对凭证存储位置的细微差异。
为什么 security find-generic-password -wa "SSID" 常报 “Could not find item”?
这个错误几乎总是因为三件事没对上:
-
security默认只查“登录”钥匙串,但部分网络(尤其是用管理员权限连接的)实际存进“系统”钥匙串,得加-s参数:security find-generic-password -s "system" -wa "My Home WiFi" - SSID 名称必须**完全一致**:大小写、空格、连字符都不能差,比如
"Office-Guest"和"office-guest"是两条不同记录 - macOS Sequoia(15.x)开始,部分新连接的 Wi-Fi 可能走 iCloud 钥匙串同步路径,本地钥匙串里压根没存——此时
密码App 是唯一入口
在 密码 App 里找不到 Wi-Fi 分类怎么办?
不是功能缺失,而是入口逻辑变了:
- macOS Sequoia 要求先点左上角 Apple ID 名字,再进
密码;直接搜“密码”或从“系统设置”首页点可能进的是 Safari 密码页 - 如果左侧边栏没显示
Wi-Fi,说明当前账户没启用 iCloud 钥匙串,或该网络从未被本机成功连接过(仅通过 AirDrop 接收过密码不算) - 已知网络列表为空?试试重启
密码App,或临时关闭再打开 iCloud 钥匙串同步(设置 → Apple ID → iCloud → 钥匙串 → 关/开一次)
终端命令怎么批量导出所有已知 Wi-Fi 密码?
别信网上那些遍历钥匙串的 shell 脚本——它们大概率失败,且会触发多次弹窗验证。真正可行的只有两步:
- 先用
security dump-keychain -d login.keychain-db | grep -A 1 -B 1 "AirPort"粗略列出所有疑似 Wi-Fi 条目(注意:输出是二进制混合文本,AirPort字样可能被截断) - 对每个疑似名称,单独执行
security find-generic-password -wa "Exact SSID",挨个试;一旦某次验证失败,后续命令就全卡住,没法自动跳过 - 想自动化?只能用 AppleScript 封装 GUI 操作(调用
钥匙串访问应用),但需要开启“辅助功能”权限,且 macOS Sequoia 对脚本调用钥匙串限制更严
真正容易被忽略的点是:Wi-Fi 密码在钥匙串里本质是“通用密码”(generic password),不是“互联网密码”(internet password),所以用 security find-internet-password 一定查不到;另外,“高级…”里点“拷贝密码”只对当前连接或最近连接过的网络有效,历史网络得回 密码 App 或 钥匙串访问 手动翻找。

















