JavaScriptを有効にしてください

【Python】2段階認証コード(TOTP)を自作する方法【pyotpライブラリ活用】

 ·  ☕ 3 分で読めます

【Python】2段階認証コード(TOTP)を自作する方法【pyotpライブラリ活用】

「2段階認証って便利だけど、いちいちスマホを取り出すのが面倒くさい…」
そんな風に感じたことはありませんか?

Pythonライブラリpyotpを使って、スマホを使わずに自分でTOTP認証コードを生成する方法をご紹介します。


🔐 そもそもTOTPって何?

TOTP(Time-based One-Time Password)は、一定時間ごとに変わるワンタイムパスワードのこと。
多くのサービスで使われている2段階認証の仕組みで、Google Authenticatorなどもこの方式です。

仕組みは以下の通りです:

  • ユーザーに発行された「シークレットキー」と
  • 現在時刻を使って
  • 6桁の認証コードを生成

これをサーバーとクライアント(例:認証アプリや自作ツール)が同時に行うことで、時刻同期されたコードをチェックできます。


📦 ライブラリのインストール

まずはTOTPを簡単に扱えるPythonライブラリ pyotp をインストールします。

1
pip install pyotp

🧪 TOTP認証コードを生成してみよう

以下のPythonコードで、シークレットキーからTOTPコードを生成できます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import pyotp

# シークレットキー(Google Authenticatorなどから取得したもの)
secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"  # 実際のキーに置き換えてください

# TOTP インスタンス生成
totp = pyotp.TOTP(secret)

# 現在時刻に対応する認証コード(6桁)
code = totp.now()

print("認証コード:", code)

✅ 実行結果(例)

認証コード: 123456

このコードは約30秒ごとに切り替わります。
複数回実行すると、そのたびに異なるコードが得られるはずです。


💡 実際にどんな場面で便利?

  • サーバーへのSSHログイン時に2段階認証が必要だけど、スマホを取り出すのが面倒…
  • VPN接続や管理画面ログインなど、頻繁にコードを確認するシーン

こうした場面では、このスクリプトを実行するだけで即コード取得できるので、時短&スマート!


⚠️ 注意点:セキュリティ意識は忘れずに!

便利とはいえ、シークレットキーをPC上に平文で保存しておくのはリスクがあります。
次のような対策がオススメです:

  • .envファイルや環境変数に保存してコード内で直接書かない
  • GitHub等に公開しない(.gitignore設定を忘れずに)
  • ファイルやディレクトリに適切な権限を設定

参考


🧭 まとめ

項目内容
ライブラリpyotp
入力シークレットキー(Base32)
出力時刻ベースの6桁コード
実行タイミング任意。コードは30秒ごとに変化

スマホを取り出す手間を省き、自分のPCで手軽にTOTPコードを生成できるというのはかなり便利な工夫です。
ぜひあなたの開発・運用環境に取り入れてみてください!

共有

こぴぺたん
著者
こぴぺたん
Copy & Paste Engineer