以前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あてに送られてきたキーを使ってログインすることもできる。