CommentsTweetPocketYubikeyというデバイスをご存じだろうか?簡単に説明すると、鍵ファイルを中に保管しておくハードウェアトークンで、中央にある円をタップするとパスワード(基本はワンタイムパスワードだが、静的なパスワードも設定可能)が自動入力される。鍵ファイルは直接読み込めず、パスワードで保護されている。ハードウェアによる二要素認証に利用できる便利なツールだ。4詳細については、以下の記事が良くまとまっているのでそちらを参照するとよいだろう。Qiitaで、今回はLinuxへのsshログインにおいて、二要素認証の一つとしてこのYubikeyによる認証を設定する。YubikeyはミドルエンドのYubikey4を用い、接続にはTeratermを用いる。OTPというものもあるのだが、オンライン状態じゃないとログインできなくなるので割愛)と通常のパスワード認証の2つを用いるものとする。1.Yubikeyの設定まずはYubikeyの設定を行う。パーソナライゼーションツール』というものが必要になるので、これのWindows版をインストールしておく。インストールについては.exeを実行するだけなので省略。Tool」を起動する。Mode」を選択する。作成Modeについては「Quick」を選択する。Configuration」をクリックし設定を書き込む。CSVファイルでシークレットキーなどは出力されるので、それらは後程利用する。2.sshサーバ側の設定sshサーバ側では、まず以下のコマンドを実行しpamでOATHを利用できるようパッケージをインストールする。Debian/Ubuntu系の場合パッケージインストール後、「/etc/pam.d/sshd」に以下の内容を追記し、sshログイン時に「pam_oath.so」を読み込むよう設定する。digits=8CentOSなどの場合、SELinuxの権限回避のため「/etc/liboath」配下に設置するほうがいいだろう(SELinux無効化してるなら/etc直下でも問題なし)。Links次に、「/etc/users.oath」ファイルを新規で作成する。a4fe20a4b209f6bc9ec9aa1a473d69f1bcabd039ファイル作成後、パーミッションを600、所有者・グループともにrootにする。場合はさらにSELinux関係の権限についても設定を行う。SELinux対応sshdの設定を変更し、以下の項目について変更する。sshdを再起動する。sshd3.ログインの実行さて、設定が完了したら、実際にログインしてみよう。クライアントにTeratermを使っている場合は接続時の方式としてチャレンジレスポンスを用いる。最初にユーザのパスワードを求められる(/etc/pam.d/sshdでの記述の順番による)ので、入力する。次にワンタイムパスワードを求められるので、Yubikeyをタッチしてワンタイムパスワードを入力してやる。無事問題なければログイン完了。ちなみに、sudo実行時にワンタイムパスワードを要求する場合は、「/etc/pam.d/sudo」の一番上に、以下の内容を記述してやることで設定できそうだ。blacknonインフラエンジニア(...のつもり)。仕事で使うならクライアントはWindowsよりはUNIXの方が好き。Commentコメントをキャンセルメールアドレスが公開されることはありません。