AWSやGitHubなど、2段階認証がログイン時に一般的になっています。
その際私は今までiPhoneアプリの Google Authenticator を利用していました。

AWSのログインの場合、
多い時は1日に数回Macでログインしてその度にiPhoneで2段階目のパスコードを確認して、、
と中々手間がかかる事があります。
せっかく手元にMacがあるのだからMacでパスコードを確認できるものならしたい!
と思って見つけたのが今回の方法。
それを叶えるのが oathtool というライブラリです!
こちらのライブラリはAWSに限らず、例えばGoogleの2段階認証にも対応しています。
検証した環境
1 | oathtool | 2.6.6 | |
2 | Homebrew | 3.4.6 | |
3 | macOS | 12.3.1 | Monterey |
セキュリティリスクが上がるので導入はくれぐれもご注意を!
導入方法
oathtoolのインストール
$ brew install oath-toolkit
# インストール出来た事の確認
$ oathtool -v
oathtool 2.6.6
シークレットキーを設定
IAMの「仮想MFAデバイスの設定」からシークレットキーを取得します

上記の「シークレットキーを表示」を押下して
表示されるシークレットキーを使ってターミナル上で oathtool
コマンドを利用すると、
6ケタのコードが表示されます!
$ oathtool --totp --base32 "<MFA設定時に発行されるシークレットキー>"
012345 # Google Authenticator のアプリで発行されるコードと同じコード
これがGoogle Authenticator のアプリで発行されるコードと同じコードになります。
そのためAWS上では2つのMFAコードに、上記のコマンドで発行されるコードを2回入力します。
aliasを設定
毎回入力するのはめんどくさいためalias化すると便利です
awsopt='oathtool --totp --base32 <シークレットキー> | pbcopy && pbpaste && echo "ワンタイムパスワードがコピーされました"'
これで実行すると
$ awsopt
012345
ワンタイムパスワードがコピーされました
と表示され、
クリップボードにもコピーがされています!
あとはAWS上でログイン、cmd + v で貼り付ければ2段階認証が完了します。