コンテンツにスキップ

二要素認証の設定

コマンドラインから二要素認証(2FA)のTOTPトークンを生成できるツールをセットアップします。

Terminal window
brew install oath-toolkit
Terminal window
# 基本的な使用方法
oathtool --totp --base32 YOUR_SECRET_KEY
# 生成したトークンをクリップボードにコピー
oathtool --totp --base32 YOUR_SECRET_KEY | pbcopy

よく使用するサービスのトークン生成をエイリアスとして設定すると便利です。

.zshrcに追加:

Terminal window
# 例:各サービス用のエイリアス
alias service1_key='oathtool --totp --base32 YOUR_SERVICE1_SECRET | pbcopy'
alias service2_key='oathtool --totp --base32 YOUR_SERVICE2_SECRET | pbcopy'

設定を反映:

Terminal window
source ~/.zshrc
  1. シークレットキーは機密情報です
    • .zshrcにハードコードする場合は、ファイルの権限を適切に設定
    • 可能であれば、環境変数や別の安全な場所に保存
Terminal window
# .zshrc.secretなど別ファイルに記載
export SERVICE1_SECRET="YOUR_SECRET_KEY"
# .zshrcで読み込み
source ~/.zshrc.secret
alias service1_key='oathtool --totp --base32 $SERVICE1_SECRET | pbcopy'
Terminal window
# シークレットをキーチェーンに保存
security add-generic-password -a "$USER" -s "service1-totp" -w "YOUR_SECRET_KEY"
# キーチェーンから取得して使用
alias service1_key='oathtool --totp --base32 $(security find-generic-password -a "$USER" -s "service1-totp" -w) | pbcopy'

Google Authenticatorアプリから秘密鍵を抽出する必要がある場合:

  1. QRコードから秘密鍵を抽出
  2. Base32形式であることを確認
  3. oath-toolkitで使用
  1. 時刻同期の確認

    Terminal window
    # システム時刻の確認
    date
    # NTPで時刻同期
    sudo sntp -sS time.apple.com
  2. 秘密鍵の形式確認

    • Base32形式であることを確認
    • 大文字・小文字の区別
Terminal window
# 前後のタイムウィンドウも考慮
oathtool --totp --base32 YOUR_SECRET_KEY --window 1
Terminal window
# 6桁以外のトークン長を指定
oathtool --totp --base32 YOUR_SECRET_KEY --digits 8
# SHA256アルゴリズムを使用(デフォルトはSHA1)
oathtool --totp --base32 YOUR_SECRET_KEY --totp=sha256