Kensuke Kousaka's Blog

Notes for Developing Software, Service.

SSH認証にGoogle Authenticatorを追加した

パスワード無しの公開鍵にて認証を行うSSH Server(ArchLinux)において,Google Authenticatorを認証に加える事が出来ると知り,設定を行った.

まずは,以下のコマンドを実行してGoogle AuthenticatorのPAMライブラリを導入する.

$ yaourt -S libpam-google-authenticator

次に,/etc/pam.d/sshdを編集し,sshdのPAMにGoogle Authenticatorを組み込む. 以下の1行をデフォルトで記載された4行の上に追加した.

auth sufficient pam_google_authenticator.so

また,/etc/ssh/sshd_configの編集を行い,sshdGoogle Authenticatorに対応させる. 以下の2行を追加した.

ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive

さらに,Google Authenticatorの2段階認証を用いるための秘密鍵をユーザのホームディレクトリ以下に作成する. 以下のコマンドを実行することで秘密鍵を生成できる.

$ google-authenticator

いくつかGoogle Authenticatorの動作に関する質問があるのでそれに答えていくと,最後にURLとシークレットキー,Emergency Codeなどが表示される. 表示されたURLを適当なブラウザで開くとQRコードが表示されると思うので,これをスマートフォンGoogle Authenticatorアプリから,読み取り,登録する. Emergency Codeに関しては,盗み見られる危険の無い,安全な場所に保管する.

これら作業が終われば以下のコマンドを実行して,今まで設定してきた内容をsshdに反映させる.

$ sudo systemctl reload sshd

これで別の端末からsshでログイン試行すると,公開鍵認証の後にGoogle Authenticatorによる認証が機能するはずだ.