🔑

Googleの2段階認証をアプリを使わずMacのターミナルで行う

2021/07/15に公開

日々AWSにログインするのにスマホの認証システムアプリのコードを打ち込むのが面倒。
なのでMacbook上で完結するようにしてみました。

シークレットキーを取得する

AWSコンソールのIAMのユーザを選択し、認証情報=>MFA デバイスの割り当て=>管理仮想 MFA デバイスを選択

シークレットキーの表示で出てくるシークレットキーを控える。

# ツールのインストール
brew install oath-toolkit 
# 6桁コードの発行
oathtool --totp --base32 "<MFA設定時に発行されるシークレットキー>"
259927 # コードが出てくるのでこれをMFAコードとして利用する。

コマンド化する

alias awsotp='oathtool --totp --base32 "<MFA設定時に発行されるシークレットキー>" | pbcopy && echo "ワンタイムパスワードがコピーされました"'
exec -l $SHELL
awsotp
ワンタイムパスワードがコピーされました 

これでawsotpすると6桁コードがコピペされた状態になるのでログインコンソールのMFA認証の入力欄にCommand+Vで貼り付けてログインできるようになります。やったー!

ここまででも問題ないのですが、シークレットキーがテキストファイル直書きで少々不安、という方はこの後のキーチェーンに登録してそのシークレットキーを使うに進んでください。

キーチェーンに登録してそのシークレットキーを使う

# キーチェーンにシークレットキーを登録
security add-generic-password -a ACCOUNT_NAME -w PASSWORD -s SERVICE_NAME
security find-generic-password -a ACCOUNT_NAME -s SERVICE_NAME -w
PASSWORD # これでキーチェーンからパスワード(シークレットキー)を取得できる

さっきのエイリアスの中身を書き換えます。

alias awsotp='oathtool --totp --base32 $(security find-generic-password -a ACCOUNT_NAME -s SERVICE_NAME -w) | pbcopy && echo "ワンタイムパスワードがコピーされました"'

これで.zshrcファイルからシークレットキーを直書きしない形になり、端末のパスワードがもれない限り安全になりました。

Discussion