前言

前几年从安卓换到了iOS,就一直用的老Apple账号,新机从拿到手的时候就发现有些问题,部分软件开启会卡第一屏,而且Wi-Fi和蓝牙有时候也会出问题,要么Wi-Fi打不开,要么蓝牙连不上,甚至airdrop也会出现问题。

由于自己买的是资源机,以为就这样,再加上手机放了两天再用的时候,所有问题都不见了,当时以为是iOS的小bug,也就顺着用了。后面发现不止是iPhone,甚至iPad和Mac也会有类似的问题,但也都是偶尔出现一下。

一直到今天,我才发现,问题出在Apple的钥匙串同步里。打开Mac的钥匙串数据库keychain-2.db发现,数据库占用居然有3.99G!

这对吗这

不用想,这肯定有问题。谁家老好人密码能存3个多G啊,Wi-Fi万能钥匙吗?致电Apple客服之后,也只是让我退出账号,删除本地钥匙串,重启,登录账号,看看钥匙串有没有异常。要不然就进入恢复模式再试试,要不然就重置一下Mac再试试。

一堆操作做下来,p用没有,反而呢,我的钥匙串又膨胀了。来到了惊人的5个多G。

请输入图片描述

不是?没弄好就算了,越弄越大是何意味啊。这下我坐不住了,开始在Google搜索,发现这个问题居然在2017年就首次出现了,在2018年更是引起了集中的讨论,也被人提交到了Apple developer,很显然Apple并没有修,甚至完全没有要修复这个bug的迹象。

所以!当你的iPhone/iPad/Mac等Apple设备,会出现以下情况的。

  • 打开任意app后,有几率在Splash Screen(软件第一屏,也就是打开软件后显示软件logo,或者广告的界面)卡死,且有几率自动退出。
  • 开机引导登录iCloud之后,会一直卡在iCloud账户登录转圈圈。
  • Wi-Fi或蓝牙能搜到,但是无法连接,甚至开关也失效。
  • 打开设置app后,进入Wi-Fi/蓝牙/数据流量选项卡时,设置卡死。
  • 从iCloud恢复手机备份时,所有app,甚至系统app都无法正常打开。

如果你有遇到上述情况,且问题发生时会持续一段时间,Apple账户还开启了双重认证。那么恭喜你,你也很有可能遇到了Apple钥匙串的问题。

相关帖子一览

https://www.v2ex.com/t/491980

https://www.v2ex.com/t/482876

https://www.v2ex.com/t/495543

https://www.v2ex.com/t/1150915

开始折腾吧

你需要准备的东西

由于问题出现在钥匙串的 keychain-2.db 这个数据库文件内,而出现问题的项不会在钥匙串访问内显示,所以你在iPhone/iPad上通过越狱插件或者巨魔插件,想要删除掉异常的项来恢复正常,几乎是不可能的。

当然,由于傻逼Apple这么久了也没修复这些bug,所以你找官方客服也是没用的,他们也不会修。所以要修复这个bug,你得先有台Mac。黑苹果也行,能登录iCloud账号同步数据的都可以。

问题原因

我不是专业的,所以你想要深入分析问题的话,建议移步至

iCloud Keychain database grows when 2-factor enabled

Excessive data consumption for "Documents & Sync" and constantly high CPU load on iPhone and iPad

iOS异常流量消耗及大范围应用闪退问题的分析

这三个帖子,本文也正是基于iOS异常流量消耗及大范围应用闪退问题的分析得来的。

重置CloudKit

在此之前,请确认你的Mac已经登录了异常的Apple账户,随后前往以下目录

~/Library/Keychains/(UUID)/

UUID就是那个文件夹,一般是数字英文和-符号,这三个要素加在一起的,不过一般来说,这个目录下也就只有一个文件夹。

打开终端,输入下面的指令,确认CloudKit的登录状态。

/usr/sbin/ckksctl fetch

我的设备是macOS 26.5,在执行完后并找不到 CloudKit account:logged in 的字样,只有

View: Contacts

Key state:            fetching
CKKS managed view:    yes
Current TLK:          missing; pointer is B32F4D19-4115-44C4-96F9-EC8A2096376B
Current ClassA:       missing; pointer is 1F9A3A7B-6495-48FD-8C5E-D455A75799B7
Current ClassC:       missing; pointer is 97A3F2E1-B6D8-4F15-8214-04821EB60C3D
TLK shares: 

这里的key state一定要保证都在ready状态,fetching表示正在同步,下面的数据库重置操作做了也没用。

为了避免本地数据库与云端不一致,接下来再手动同步一次,执行

/usr/sbin/ckksctl fetch

原文已经说了不一定能成功,我这里也确实只返回了

Error: timed out waiting for response

这里我建议再次查看一下cloudkit状态,查看是否所有项目都是ready

/usr/sbin/ckksctl status -s

接下来重置本地数据库,继续执行

/usr/sbin/ckksctl reset

执行这个的时候,就已经能看到keychain-2.db文件在慢慢变小了,如果你出现了以下报错

Beginning local reset for all zones...
reset error: Error Domain=NSCocoaErrorDomain Code=4097 "connection to service named com.apple.securityd.ckks" UserInfo={NSDebugDescription=connection to service named com.apple.securityd.ckks}

说明你的cloudkit还是在从云端拉取数据,不过此时keychain-2.db会减小,建议再次检查cloudkit状态,是否所有项目都是ready而不是fetching(我等到数据库文件完全缩小后才继续,但是看起来本地数据库缩小后会直接重新拉取云端数据库同步,导致体积再次开始膨胀,所以你可以不和我一样等他做完再同步)接下来重置iCloud数据库,执行

/usr/sbin/ckksctl reset-cloudkit

接下来在macOS设备上登出异常的Apple账户,这个时候我的数据库文件已经膨胀到4G了,所以这里我又重置了一下本地数据库,这次就很正常的返回

Beginning local reset for all zones...
reset complete.

但是keychain依旧是3.26GB,登录Apple账户的时候又会降低到500mb左右,然后又开始继续膨胀。

后面发现,无论我怎样重置keychain,数据库大小最小也是1.5G,经过一番排查后发现,罪魁祸首是我之前在闲鱼上买过Apple watch心电图开通,登录过其他人的iCloud账号还保存了数据在本地。

所以我的数据库不仅是我自己的数据,还有很多别人设备的脏数据,打开Apple健康的设备可以看到,里面会有很多删不掉的iPhone。到此就只能自己清理数据库了。

手动清理数据库

该步骤有很大的风险,建议不到万不得已就不要做

既然问题出自于Apple健康,那么首先就把Apple健康的数据给删掉。在你的iPhone/iPad上,打开设置- Apple账户- iCloud-查看全部-健康-管理储存空间。这里我的健康数据有100多MB,看起来还不是很离谱,但还是删了吧。点击“从iCloud中删除数据”,删除之后还会询问是否要保留本地数据,也要选删除本地数据。

那么有的人就要说了,我还是想要Apple Watch全功能开启怎么办。如果你有Mac的话,可以试试anygo这款软件,如果你没有Mac的话,可以试试wloc这个脚本,具体方法不在此赘述。

这时回到Mac,再次触发一次数据同步

/usr/sbin/ckksctl fetch
/usr/sbin/ckksctl status -s

依旧等到状态全部为ready的时候再进行下面的操作。此时可以在代理软件里屏蔽一下iCloud同步的域名gateway.icloud.com,避免操作的时候又出发cloudkit同步,导致功亏一篑。

如果实在不会的话,可以用GPT或者Claude帮你操作一下,切记要用一个聪明一点的Ai,免费的GPT在长上下文的情况下也会流口水,DeepSeek的话记得用专家模式!有条件的话最好是用codex,Claude code等agent工具让Ai可以在本地操作。

DELETE FROM ckmirror WHERE ckzone='Manatee'

DELETE FROM inet WHERE vwht='Manatee'

此时我的数据库大小来到了1.5G和最开始reset的最小大小相同,随后就只能让Ai帮你分析数据库里的内容有哪些可以删除的了,这里我是让GPT把2025年以前的数据全部删掉,2026年以前的数据部分删掉。Wi-Fi和蓝牙配对也是如此。

一顿清理后,keychain来到了66mb,这依旧不太正常,毕竟我看了很多人的keychain就只有十几mb的大小,但是100mb以内的大小我已经很满足了,剩下的东西我也不敢乱动。

此时先把清理完毕的数据库备份一下,防止解除域名屏蔽的时候又开始同步。随后解除域名,开始重置iCloud

/usr/sbin/ckksctl reset-cloudkit

然后把本地数据上传一下

/usr/sbin/ckksctl push

此时keychain还是会继续增长,但最终不会涨得太过分,我的keychain大小最终停留在了79.3MB

请输入图片描述

其他设备

对于其他Apple设备上的脏数据,可以重置手机进行删除,备份的时候建议使用iMazing进行选择性备份,而不是使用iCloud云端或其他助手APP的完整备份,完整备份会把设备内的脏数据也一并备份,导致脏数据再次被恢复下来,恢复的时候如果有选项,切记不要恢复钥匙串/keychain的数据,而是让他从iCloud拉取清理过的新数据。

如果还是遇到问题的话,建议先登出其他所有设备并重置,在Mac上清理完毕后同步keychain到云端,然后再登出并登入Mac的Apple ID,等待Mac上的keychain大小是否正常,如Mac上的keychain大小正常且稳定后,再在其他设备登入Apple ID。

结尾

至此,你的钥匙串问题应该就完美解决了。如果还是有问题,请转至

iOS异常流量消耗及大范围应用闪退问题的分析

那里的教程更详细,评论区的方法也更多。如果问题依旧的话,还是换一个Apple ID吧。

很难想象,我找了这么久的问题,Wi-Fi蓝牙AirDrop间歇性失灵,软件间歇性卡Splash Screen,居然都是keychain的问题,我中途重新做过几次系统,甚至DFU深刷了都不行。而这个2018年就已经反馈过的bug,到现在Apple也没有修复,甚至没有给一个方便解决故障的入口。其他帖子下面还看到,有人和美国Apple工程师来来回回发送了1G多的日志,截图,录屏,最终也无济于事。Apple你长点心吧。

最后修改:2026 年 07 月 29 日
如果觉得我的文章对你有用,请随意赞赏