问题产生
在Mac上使用了jetbrain家的toolbox更新了一下IDEA之后,发现我GitHub保存的密码没了。然后我就老老实实去生成了一个token,然后进入Setting - Version Control - Github下面,填了进去。当然没有问题,显示了我GitHub的账号。我点击了保存并且退出了设置。
当我写完代码开始往GitHub上面上传的时候,又提示我需要输入账号和密码。很奇怪,我又打开了GitHub的设置界面,发生上面赫然写着Missing access token,我一开始以为自己没保存,又重新输入了一遍,这次确认保存并退出了,结果还是要我重新输入一遍密码…..
分析过程
那还能怎么办嘛,打开Google输入idea github token cannot save,第一个就是jetbrains提供的帮助页面。点进去一看,有这么一段话:
Go to Settings | Appearance & Behavior | System Settings | Passwords and make sure IDE is configured to save passwords.
If it is set to KeyChain already, the issue might be caused by https://youtrack.jetbrains.com/issue/IDEA-183847 Then lock the keychain and unlock it again - saving passwords and token should start working
这个答案教导你换一种存储账号密码的方式,首先照着打开,看看是怎么样子的:

看来IDEA准备了三种方式来让我们选择:
- 保存到本地的keychain中,在Mac中就是“钥匙串访问”
- 保存到一个数据库中,如果你选择了这项,第一次使用会让你输入一个数据库的密码来确保数据安全,当然可以看到还可以使用PGP来进行加密保护。
- 不保存密码。最安全了。
我默认使用的是第一项,这个使用的是苹果自带的“钥匙串访问”,而如果正常操作的话,此时应该会跳出钥匙串访问的对话框,要求你输入某个钥匙串的密码(默认情况下是一个叫“登录”的钥匙串),如果密码正确就没有问题了。然而我在昨天修改了我的登录密码(此密码非钥匙串访问的密码,但是大部分情况下两者是一样的),结果就悲剧了。
首先我打开钥匙串访问,然后随便选择一个密码,点击“显示密码”,这个时候就会让你输入钥匙串访问的密码,一般来说这个密码和你登陆Mac用的密码是一样的,但是我可能因为之前设置过一个不同的,导致无法使用,而我也不记得之前的密码了,所以没办法,只能去重置一下。但是发现死活重置不了,提醒我没有权限,然后需要进行一个我现在都没想通的骚操作:点击左上角苹果按钮,退出当前的用户,重新登录,这样就可以重置钥匙串访问了,然后也就没有问题了。
补充知识
简单介绍下苹果的钥匙串访问
苹果的钥匙串访问这个应用,不仅能够像Chrome一样记录下你在浏览器中输入的账号密码等敏感信息,还可以记录下一些应用内的信息(比如IDEA不就是么),还可以通过iCloud在各个设备之间进行同步,这也就是我为什么明明可以选择第二项保存在本地,还非要千辛万苦搞定好的原因。然而我难道有两台Mac么
如果忘了密码
除了还原默认钥匙串这个操作外没有办法,但是官网上给出的介绍是:
还原默认钥匙串会删除存储在钥匙串中的所有密码,但应该会允许您同步登录密码和储存在钥匙串中的密码。
注意措辞是“应该”,从我自己的实际体验,并没有丢失数据。具体操作也很神奇:

这个我卡在了第二步,说我没有权限,所以我先执行了第三步,先退出登录,然后再执行第二步中的重置,成功了。坏处是我的touch ID需要重新录入了。
简单使用
大多数情况下,这个应用是自动工作的,在你登录的时候会自动记录下你的账号密码,在你使用WiFi的时候,会自动把密码记下来,然后你别的Apple设备就不需要输入密码直接连接WiFi了。而密码和你登录的密码是一致的,如果你不小心忘记了密码,按照上面的重置即可。使用操作的逻辑也还行,界面大致这样:

第一步选择钥匙串,这里相当于有三把钥匙。每把钥匙都存放了不同的信息,点击对应的钥匙,你就能看到这把钥匙存放的内容(当然是非敏感的啦)。第二步,在右边选择具体看哪个信息,如果要看密码,就需要输入钥匙串的密码,也很符合逻辑。稍微注意的一点是,如果你没找到你要找的信息,可以通过显示 - 显示不可见项试试看。
总结
通过一次小问题简单了解了一下Mac的钥匙串访问这个应用,最有用的大概就是自动连接WiFi功能了吧(笑),其实安全备注的功能应该也还行,但是感觉大部分情况下用不到,而且这个东西是自动的,所以平时的时候就让它默默为我们工作就好了。