
2026/03/31 2:21
Apple キーチェーンを復元
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
要約
著者は、作業用MacBookのローカルmacOSパスワードではなくActive Directoryパスワードを入力して誤ってロックした後、失われたMac Keychainを回復する方法について説明しています。ITに連絡した結果、macOS Recoveryを使用してノートパソコンのパスワードをリセットしましたが、この操作でKeychainが消去されiCloud同期が破綻することに気づきませんでした。macOSはリセット後に自動的にKeychainを再暗号化しないため、空の
login.keychain-dbファイルが作成され、バックアップコピー(login_renamed_1.keychain-db)も保持されます。macOSが古いデータで再同期することを提案した際に、ユーザーは既に許可された試行回数を使い果たしており、「iCloud データを削除」するよう促されました。
長年のArch Linux愛好家だった著者は、失敗ログインカウンタをリセットまたはデータを直接回復したいと考えていましたが、元のKeychainファイルを復元する手順は簡単であることに気付きました。具体的には、新しい
login.keychain-dbを削除し、login_renamed_1.keychain-dbをlogin.keychain-dbへリネームしてからKeychain Accessを開きます。この操作で古いパスワードの入力が求められ、正しく入力するとiCloud同期が回復し、システムは新しいmacOSパスワードを使用するよう更新されます。正しいファイル位置を特定すれば手順は簡単であり、この知識は同様のリセットを行う人にとってKeychainデータの永続的な損失を防ぐ助けとなります本文
私は仕事用のMacBookを自分で鍵をかけてしまうという不運に見舞われました。
「毎日使っているはずなのに、そんなことしてるんですか?」と聞かれるのも当然でしょう。
実際、私は毎日必ず使用しています――おそらく想像よりも頻繁に。ところが、いくつかの要因が重なり、このような事態に至ったのです。まず、Touch ID に頼ることに慣れすぎてしまったため、もし手順を忘れてしまうとロックアウトしてしまいます。そして、Mac のパスワードではなくオフィスの Active Directory(AD)パスワードを入力し続けていました――これもまた筋肉記憶に頼る結果です。気づいた時にはすでにロックアウト状態でした。
従業員なら誰でもそうでしょう、IT 部門へ連絡しました。
その判断がどれほど有用だったか(あるいは無かったか)はここでは省略します。
macOS のリカバリー機能を使ってパスワードを再設定したのですが、その影響について十分に理解していませんでした。新しいパスワードでログインすると、キーリングデータや一部ローカルユーザーデータが消えてしまい、同期も停止しました。
実際には、そのデータは旧パスワードで暗号化されており、リセットユーティリティはそれを新しいパスワードで再暗号化しません。セキュリティ上は理にかなっていますが、パスワード変更時に自動的に処理してくれる「マスターキー」があると仮定していたのです。
リセット後、macOS は旧データとの同期を試みるオプションを提示しました。残念ながら、既に旧パスワード入力回数が上限に達しており、毎回「iCloud データを削除しますか?」という恐ろしいプロンプトが表示されました。
長年の Linux(Arch Linux)愛好者として
失敗したログイン試行カウンタをリセットする方法、あるいはデータを直接復旧する手段があるはずだと考えました。Apple 製品であれば簡単ではないと予想しつつも調査を進めるうちに、キーリングデータは以下の場所に保存されていることが判明しました。
~/Library/Keychains
主要ファイルは
login.keychain-db です。パスワードリセット時、macOS は元のキーリングを
login_renamed_1.keychain-db に移動し、新しい login.keychain-db を作成しました。
古いデータの復旧
古いデータを戻す手順は驚くほど簡単でした:新しいキーリングファイルを古いものに差し替えるだけです。
# キーチェーンディレクトリへ移動 cd ~/Library/Keychains # 新しく作成されたキーチェーン(重要なデータが無ければ)を削除 rm login.keychain-db # 古いキーチェーンを元の名前に戻す mv login_renamed_1.keychain-db login.keychain-db
これで完了です。
Keychain Access を起動すると、旧パスワードの入力が求められます。正しく入力すれば全てが同期され、新しいパスワードに移行したことが確認できます。