最近は多くのサイトが2段階認証を採用していて、僕も気がついたら 10個以上のサービスで使用しています。
一般的には、 Google 認証システムや、その互換アプリをスマホに入れて使っていると思います。 僕は IIJ SmartKey|スライド認証・ワンタイムパスワード管理 というのを使っています。
けれどもスマホを紛失、破損した場合に備え、バックアップとしてPCでも TOTP(時間ベースのワンタイムパスワード) を生成できるようにしておくと便利です。
今回は、ぼくの使っているる Ubuntu での TOTPクライアントについて解説したいと思います。
なお、今回は CLI での作業となります。また安全のため Ubutnu の公式リポジトリの (apt でインストール) できるパッケージのみを使うことにします。
環境は Ubuntu 18.04 ですが、 Ubuntu 16.04 にも同じパッケージが有るので OK だと思います。それより古いバージョンについては調べていません。
パッケージのインストール
インストールするのは、バーコードを読み取るための zbar-tools
と、ワンタイムパスワードを生成する oathtool
(つづり注意) です
$ sudo apt install zbar-tools oathtool
QR コードの読み取り
2段階認証を有効にすると次のような QR コードが表示されると思います。
もし、これを totp.png
のようなファイルに保存したとすると、
$ zbarimg totp.png
でファイルから QR コードを読み込むことができます。
あるいは PC にカメラがついていれば、
$ zbarcam
と入力するとカメラが起動し、QRコードを読み込むことができます。
いずれにしても
QR-Code:QR-Code:otpauth://totp/Amazon%20Web%20Services:sample1@12345678901?secret=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&issuer=Amazon%20Web%20Services
scanned 1 barcode symbols from 1 images in 0.07 seconds
と表示されるので secret=
と次の &
の間に有ある XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
の部分を記録してください。
参考: Key Uri Format · google/google-authenticator Wiki · GitHub
( 保存した画像や、この文字列が漏れると2段階パスワードが破られていましますので、取扱には注意してください。)
$ oathtool --totp=sha1 --base32 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
のように、先程の文字列を oathtool に与えるとワンタイムパスワードが標準出力に表示されます。
このコマンド行を、パスワード管理アプリ等に保管して管理すると良いのではと思います。