Okada Hiroshi の blog

typo が多いです

2段階認証ワンタイムパスワード (TOTP) クライアント を Ubuntu (コマンドライン) で

最近は多くのサイトが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 コードが表示されると思います。

f:id:OkadaHiroshi:20181017161854p:plain

もし、これを 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 に与えるとワンタイムパスワードが標準出力に表示されます。

このコマンド行を、パスワード管理アプリ等に保管して管理すると良いのではと思います。