Mac OS XでパスワードやトークンをKeychain管理にしてスクリプトから使う方法


例えば .zshrc とかに HOMEBREW_GITHUB_API_TOKEN をexportしてるけど、このファイルを人に見せることになると困る。回避方法としては ~/.github_token を別途作ってそっちに値を書き込んで置いて

if [ -f ~/.github_token ]; then
  . ~/.github_token
fi

こんなふうにするという解決策もあるにはある。が、もうちょっとセキュアかつ簡単な方法はないものか、ということで以下のようにすると捗った

Keychainに値を登録する

security add-generic-password -a homebrew-github-api-key -s homebrew-github-api-key -w XXXXXXXXXXXXXXX

Keychainから値をとりだす

security find-generic-password -ga homebrew-github-api-key

このままだと余計な情報もたくさん取れてきてしまうので、必要な部分だけ抜き出すようにする

security find-generic-password -ga homebrew-github-api-key 2>&1 >/dev/null | ruby -e 'print $1 if STDIN.gets =~ /^password: "(.*)"$/'

これでファイルに直接書かないでよくなったので、.zshrcとかでexportするときも $(security ...) をexportしてやればいい。うむ。

osx  tips