OpenSSHの6.2以降では、AuthenticationMethodsという項目を指定することで複数要素での認証を行うことができる。 これを使って、鍵認証とユーザパスワード認証の二要素認証設定を行ってみる。

「鍵とパスワードなら、秘密鍵にパスフレーズつけときゃいいじゃん」とも思うが、今回はそれはおいておく(鍵は使いまわして、特定のサーバだけ二要素認証にしたい場合もあるので)。

記述方法としては、AuthenticationMethodsの指定のあとに認証方式の組み合わせをカンマ区切りで、パターン別はスペース区切りで記述してやればよい。 例えば鍵認証+パスワード認証(orチャレンジレスポンス)の場合は、以下のように記述してやる(事前にChallengeResponseAuthenticationをyesにしてやるのを忘れないように)。

/etc/ssh/sshd_config
AuthenticationMethods publickey,password publickey,keyboard-interactive

設定記述後、sshdを再起動すれば設定が反映されて2要素認証が有効になる。 以下が実際にログインした際の表示。「Authenticated with partial success.」と出ている場合は、鍵認証は通過している状態だ。

blacknon@BS-PUB-DEVELOP:~$ ssh root@BS-PUB-CENT7-01.BLACKNON.LOCAL -i .ssh/id_rsa
Authenticated with partial success.
Password:
Last login: Fri Jan 20 01:25:08 2017 from bs-pub-develop
[root@BS-PUB-CENT7-01 ~]#