macOS にキーチェーンのパスワードを毎回聞かれる場合の対処方法

キーチェーン

mac を買い替えた辺りから Xcode でキーチェーンを使うアプリをデバッグ実行するたびにキーチェーン利用の許可が求められるのが気になっていたので、それを解消する方法を調べてみました。


Xcode を使って Keychain を利用する macOS 用アプリを制作していたときに、 デバッグ実行を行うたびに毎回、キーチェーンにアクセスするためのパスワードを複数回入力しないといけないことがありました。

そのような状況が発生したきっかけは、もしかすると新しい mac に移行した頃合いかも知れないのですけれど、 理由としてはキーチェーンの ログイン に登録されているパスワードが何らかの理由で 問題になっている可能性があるらしく、調べてみた感じではキーチェーンをリセットする必要があるようでした。

リセットすると削除される項目について

キーチェーンをリセットすると ログインローカル項目 に登録されている項目が消去されるとのことでした。

iCloud キーチェーンを利用している場合は ローカル項目 は用意されていないみたいで、自分は iCloud キーチェーンを使っていたため、登録されていませんでした。iCloud キーチェーンを無効化したときには ローカル項目 が登場します。

キーチェーン データベースのバックアップ

リセット操作の時にも自動でキーチェーンがバックアップされる様子なのですけれど、意図的にバックアップできたら安心と思って調べてみると、 ローカルのキーチェーンにコピーできたら、キーチェーンが保存されているデータベースファイルをコピーすることで、バックアップできたことになる様子です。

キーチェーンのデータベースは ~/Library/Keychains フォルダーに保存されているので、このフォルダーごとコピーして保存しておくことにしました。

キーチェーンをリセットする

キーチェーンの ログイン 情報のリセットは、キーチェーンアプリで行います。

試してみた感じだと、それに先立って Mac をあらかじめ セーフブート しておく方が上手くいきそうな様子でした。そのためここで、Mac を キー を押しながら起動して、セーフモードで起動しておくことをお勧めします。

セーフブートしないままキーチェーンのログイン情報をリセットしようとした場合、処理の途中で『この操作の認証を得ることができません。』と表示されることがある様子でした。

準備ができたら、アプリケーション フォルダー内の ユーティリティ フォルダーから キーチェーンアクセス アプリを起動します。

そして、システムメニューの キーチェーンアクセス 環境設定 を選択して、設定画面を開きます。

ここの 自分のディフォルトキーチェーンをリセットボタン を押すことで、リセットされた状態の ログインローカル項目 のキーチェーンが作り直されました。

キーチェーンにパスワードを設定しておく

キーチェーンをリセットする途中で、生成で使うパスワードを入力したはずなのですけれど、 リセットが終わった段階で『新しい空の "ログイン" キーチェーンをパスワードなしで作成しました』と表示されたので、念のためパスワードを再設定しておくことにします。

それにはまず、キーチェーンアクセスアプリを起動して、画面左上にある ログイン を選択します。

そして、システムメニューの 編集 キーチェーン "ログイン" のパスワードを変更 を選択すると、パスワードを変更するための画面が表示されました。

ここで、変更対象のキーチェーン名が ログイン になっていないのが気になるのですけど、とりあえず現在のパスワードと新しいパスワードを入れて OKボタン を押すことになります。

ただ、"パスワードなしで作成した" のなら 現在のパスワード 欄は空で良さそうなのですけれど、それだとパスワードの変更処理ができませんでした。結局のところ、現在のパスワードも、新しいパスワードも、mac にログインする時に使うパスワードを入力して、パスワードを再設定しておくことになりました。


そうしたら mac を再起動して、これでキーチェーンのリセット操作は完了です。

改めて確認してみると、ログインパスワードの変更操作がロックされて出来なくなっていたので、 パスワードの変更操作は何らかの効果があったのかも知れません。

他、そんな検証の中で自分は iCloud キーチェーンをいったん無効化したりいろいろ操作していたのもあって、 設定直後はいくつかのパスワード情報が復元されていない状況になったりしましたが、とりあえず Web ページへのアクセスに関しては iCloud キーチェーンの同期に時間がかかっていただけなのか、再起動し直したりしているうちに解消しました。

ただ、もしかするとたとえば AirMac や TimeMachine へのアクセスなどのパスワードが消えたままの可能性もありそうだったので、リセットする際にはパスワードが自動入力されなくなる可能性も考慮しておくのが良さそうでした。