以前Google Authenticatorによるsshログイン時のワンタイムパスワード認証(Ubuntuはこっち)について記述したが、似たようなツールでAuthyというアプリ(というかサービス)を利用することで同様のことができるので、CentOS 7でsshログイン時に二要素認証が行われるように設定してみることにした。
事前にiPhone/AndroidでAuthyのインストール・設定をしておく。これについては簡単なので、こちらを参考に進めておけばよいだろう。

1.Authyの設定・APIキーの取得

まず最初にAuthyの設定およびAPIキーの取得だ。
こちらからAuthyのアカウント作成その他もろもろを行う(twilioのページに飛ばされるが、これはそういう仕様)。

アカウント作成時には、Authyアプリで設定したメールアドレス等を指定するとよいだろう。
Dashboardの作成後、アプリの追加時にAPIキーの生成を行える。

2.インストール・ワンタイムパスワード設定

APIキーを取得したら、OS側の設定に移る。
まずはOSへ、ssh時にAuthyを利用するためのパッケージ「authy-ssh」を導入する。

curl -O 'https://raw.githubusercontent.com/authy/authy-ssh/master/authy-ssh'
sudo bash authy-ssh install /usr/local/bin
[test@BS-PUB-CENT7-02 ~]$ curl -O 'https://raw.githubusercontent.com/authy/authy-ssh/master/authy-ssh'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 18676  100 18676    0     0  57125      0 --:--:-- --:--:-- --:--:-- 57288
[test@BS-PUB-CENT7-02 ~]$ sudo bash authy-ssh install /usr/local/bin
[sudo] password for test:
Copying authy-ssh to /usr/local/bin/authy-ssh...
Setting up permissions...
Enter the Authy API key: APIキー
Default action when api.authy.com cannot be contacted:

  1. Disable two factor authentication until api.authy.com is back
  2. Don't allow logins until api.authy.com is back

type 1 or 2 to select the option: 2
Generating initial config on /usr/local/bin/authy-ssh.conf...
Adding 'ForceCommand /usr/local/bin/authy-ssh login' to /etc/ssh/sshd_config

Checking the validity of /etc/ssh/sshd_config file...
    MAKE SURE YOU DO NOT MOVE/REMOVE /usr/local/bin/authy-ssh BEFORE UNINSTALLING AUTHY SSH

To enable two-factor authentication on your account type the following command:

   sudo /usr/local/bin/authy-ssh enable test   
   Example: sudo authy-ssh enable test myuser@example.com 1 401-390-9987

To enable two-factor authentication on user account type:

   sudo /usr/local/bin/authy-ssh enable    

To uninstall Authy SSH type:

   sudo /usr/local/bin/authy-ssh uninstall

      Restart the SSH server to apply changes

次に、以下のコマンドで2要素認証の設定を有効化する。
Authyで設定したメールアドレス、国コード、電話番号を引数として指定する。

sudo /usr/local/bin/authy-ssh enable `whoami` <your-email> <your-country-code> <your-cellphone>
[test@BS-PUB-CENT7-02 ~]$ sudo /usr/local/bin/authy-ssh enable `whoami` test@XXX.jp 81 070XXXXXXXX
[sudo] password for test:

    Username:   test
    Cellphone:  (+81) 070XXXXXXXX
    Email:      test@XXX.jp

Do you want to enable this user? (y/n) y
User was registered

最後に、sshサービスを再起動する。

sudo systemctl restart sshd

3.ワンタイムパスワードでログイン

さて、もろもろの設定ができたので、sshでログインをする。

blacknon@BS-PUB-UBUNTU-01:~$ ssh test@BS-PUB-CENT7-02
test@BS-PUB-CENT7-02's password:
Authy Token (type 'sms' to request a SMS token): 6312723
Good job! You've securely logged in with Authy.
[test@BS-PUB-CENT7-02 ~]$

無事、ログインができた。鍵認証なし(パスワード認証のみ)でも普通にログインできるので、環境によっては重宝するかもしれない。
なお、ワンタイムパスワード入力時にsmsを指定することで、smsあてに送られてきたキーを使ってログインすることもできる。