背景
PC 環境をWindowsからMacへ変更したところ、keychainで保存されるcodecommitパスワードが15分すぎたら
無効になってしまって403になる。keychainの設定毎回するのも面倒。それで以下にようなコマンドで定期的に
keychainのパスワード削除する方法がある。
ここを参考して
コマンドの詳細を調べなした。
terminalで security help でコカンド情報を表示される。
security delete-internet-password help
Usage: delete-internet-password [-a account] [-s server] [options...] [keychain...]
-a Match "account" string
-c Match "creator" (four-character code)
-C Match "type" (four-character code)
-d Match "securityDomain" string
-D Match "kind" string
-j Match "comment" string
-l Match "label" string
-p Match "path" string
-P Match port number
-r Match "protocol" (four-character code)
-s Match "server" string
-t Match "authenticationType" (four-character code)
-l コマンドでレベルで削除できることがわかる。その後以下のコマンド実行して成功。
Terminal にて1件削除
以下にように security delete-internet-password コマンドで削除うできるが毎回消す必要があるので
面倒。
security delete-internet-password -l git-codecommit.ap-northeast-1.amazonaws.com
複数件を定期的に削除
以下のようにスクリプトでバッチを定義的に動くようにすれは気にしないまま勝ってに消せるので便利。ProgramArgumentsに実行したい
文字列に配列を作成すればよい。今回実際実施したコードは以下です。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>delete-codecommit-keychainpass</string>
<key>ProgramArguments</key>
<array>
<string>security</string>
<string>delete-internet-password</string>
<string>-l</string>
<string>git-codecommit.ap-northeast-1.amazonaws.com</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StartInterval</key>
<integer>600</integer>
<key>StandardErrorPath</key>
<string>/tmp/error.log</string>
<key>StandardOutPath</key>
<string>/tmp/key_delete.log</string>
</dict>
</plist>
この例ではStartInterval を600つまり10分ごとと設定してますが、もっと早く削除したい場合その値を変更すれはよいです。
やったこと
- ~/Library/LaunchAgents/ にdelete-keychain-password.plistファイルを追加
- 上記載のコードでファイルを上書き
- launchctl load コマンドで設定をロード
- 何かの情報変更必要ば場合launchctl unload コマンドで一回設定無効にして.plistファイルを更新して再度 load コマンド実行すれはよい。
コマンドリスト
cd ~/Library/LaunchAgents/
vi delete-keychain-password.plist
launchctl load ~/Library/LaunchAgents/delete-keychain-password.plist
launchctl unload ~/Library/LaunchAgents/delete-keychain-password.plist
まとめ
上記載のやり方で実行して正常にパワワード削除されていることが確認しました。
今回に対応にここを参考 しました。
今回はcodecommit用パスワードを削除しましたが、同じように必要に応じて他にパスワードも削除可能です。