「OTPW」というpamモジュールを利用して、銀行のパスワードカード(三井住友銀行のちょっと前の認証形式みたいなやつ)に似た認証形式を利用できるようなので、Ubuntu 14.04 LTSで設定してみることにした。

1.インストール・設定

まずはOTPWのインストールおよびsshdへの設定追加を行う。
以下のコマンドを実行し、OTPWをインストールする。

sudo apt-get install otpw-bin libpam-otpw

インストール完了後、「/etc/pam.d/sshd」の以下の項目について編集する。

●/etc/pam.d/sshd

#@include common-auth # コメントアウト
auth       required     pam_otpw.so # 追記
session    optional     pam_otpw.so # 追記

次に、sshdの設定ファイルである「/etc/ssh/sshd_config」について、以下の項目・内容について編集をする。

●/etc/ssh/sshd_config

UsePAM yes
UsePrivilegeSeparation yes
ChallengeResponseAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication no

最後に、sshdの再起動を行い変更を適用する。

sudo service ssh restart

2.パスワード表の生成

sshの設定が終わったら、以下のコマンドを実行してパスワード表を作成する。
このとき、パスワードの照合を行うファイル(~/.otpw)を暗号化するパスワードの入力を求められるので入力する。
※このパスワードはログインの際にも利用するので覚えておくこと。ここでは"test"というパスワードを指定したものとする。

otpw-gen
blacknon@BS-PUB-UBUNTU-01:~$ otpw-gen
Generating random seed ...

If your paper password list is stolen, the thief should not gain
access to your account with this information alone. Therefore, you
need to memorize and enter below a prefix password. You will have to
enter that each time directly before entering the one-time password
(on the same line).

When you log in, a 3-digit password number will be displayed.  It
identifies the one-time password on your list that you have to append
to the prefix password. If another login to your account is in progress
at the same time, several password numbers may be shown and all
corresponding passwords have to be appended after the prefix
password. Best generate a new password list when you have used up half
of the old one.

Enter new prefix password:
Reenter prefix password:

Creating '~/.otpw'.
Generating new one-time passwords ...

OTPW list generated 2016-06-25 16:03 on BS-PUB-UBUNTU-01

000 %%7i VIoI  056 uK=9 Qw:n  112 2V/= 7%oD  168 amic +XuO  224 9RHg P/E7
001 O4H/ BNQa  057 S4=9 mI8p  113 7gwd AdoU  169 /=kL +s94  225 ACpd =ouu
002 Sx5W KoXb  058 Lcdo Vs8U  114 qyCn dbqm  170 QO:P 6OOi  226 co:C dnRz
003 R6aG vjQ/  059 qTPM GMrG  115 WFzH :gWX  171 csxO pddy  227 8Xpg efP8
004 dW%F ikTh  060 XPoE 3VT/  116 fyaG ndA7  172 mMET JUb+  228 =Ldo msh+
005 gSVG zFCT  061 GTUK jVoC  117 3CG5 RCep  173 RrnQ :ddy  229 EA2Q RRtb
006 qVyN %vRN  062 SDyD g:IK  118 YO:i QiWm  174 2Tza A:cE  230 xNc= 7sf2
007 HVjt Gg4i  063 :BNU nwQH  119 :vpZ Le28  175 =iv4 +RN6  231 FBLH YGha
008 LSj2 jPPX  064 7T4e m5yA  120 r7z4 pNQ6  176 pGag :NYj  232 d9o3 T6=S
009 Zezo rdAJ  065 MJLz 4/:p  121 M/j% t=Wb  177 BV=Z WfWS  233 7CwZ tgcc
010 3XaD LeC5  066 ky9R YtMo  122 nji% WEML  178 cbcI 29Hk  234 7Xc/ To2c
011 4:qv y3rp  067 cBIq Rq+o  123 QYYi zbdg  179 Ty8r 4gEX  235 :9wX EK+d
012 bjjz WzB+  068 MQza sLvB  124 d%Xe u:Jy  180 iBzK F=Ey  236 nCC+ bhnS
013 Wa88 4V:d  069 PcSf Pt3G  125 r7vG qBKG  181 NPP9 TMC4  237 t/oi yAK9
014 HbkY V76I  070 kKBF bCz%  126 g%aN TEqH  182 jx%P PsNR  238 :Q9r z+RS
015 8=dS u5QH  071 26Sa ZBXv  127 v5y5 DSzv  183 bFug +6JF  239 4:/6 T6D4
016 bWDu ZZYk  072 BB/P EOwy  128 xLZn uvpa  184 qk%R wXMf  240 huxJ JAkd
017 UuNy Phxh  073 5Qw= :yxX  129 VDsX e=Dp  185 DxvW u9Xa  241 rIm9 z3mZ
018 Gpt9 iLpp  074 nUyi AFrQ  130 YvD/ tHN/  186 :9w2 SrJN  242 bxB4 TEBJ
019 :3uQ yLIB  075 HFVG PLLL  131 aZ9q FELd  187 T5hf DBAq  243 teoc cOXx
020 HN7m bbFo  076 BJqj rH%Y  132 wSsn JQnx  188 q:vG uhtf  244 xXij TWFh
021 YqW5 WQE4  077 IZ:s GcmD  133 R4Y4 IroK  189 %8yC %2wQ  245 YA5H NkoX
022 MdeW 8GzI  078 Pt7A y5xz  134 3EFI /ZKE  190 AGH6 CCmG  246 +4fy WLRz
023 ubg9 M%eS  079 VXdD benc  135 i/u5 SZNy  191 GbQd 5uxu  247 d5fG ym++
024 K8Em bTpu  080 UI8g %p8u  136 URPS JQgp  192 SrZV Y4qt  248 rdWY Zg4n
025 LL/H b3TO  081 F=E/ mhNj  137 8Y5J L+dq  193 FPXN 9Fwu  249 yZmG boug
026 Y:gF JAyT  082 s/RN BFkH  138 jFoN arTo  194 pY7w HOr8  250 EuVb RWr:
027 hPHA :8xi  083 LprC crzU  139 3nV6 =irV  195 AhWe v6SP  251 r4bK V9wG
028 h3/C pscI  084 YKbE B+8Q  140 a2kE 6Ab3  196 kRss rVcE  252 KmxF Bzbv
029 rSNZ SDPP  085 fDJI drZ3  141 EIfV iBVM  197 iCTW yXd/  253 MRBm UTp=
030 NxvY cxLV  086 L5s: q=So  142 rxa: CaDI  198 XW7x muuY  254 I93H cL4V
031 JQtc %bk3  087 FFJ3 7Mq%  143 +7Jw vQuS  199 xJI= r2WT  255 ZD/C g:xH
032 Y9DP nfda  088 :exB Kfin  144 37jO g4nP  200 NdvW 3NQW  256 5MzY DYF=
033 yDqD KUMM  089 sFjC g6Zq  145 ekfG bKOI  201 ib5M w5fk  257 mQni mI:F
034 3S7r mp6I  090 qo%h 77H2  146 L%EA 2=4h  202 3dxi I94=  258 i7Pg =:IJ
035 WzVs z36j  091 83RI :fLy  147 pv9c QBi%  203 tKKw /go+  259 XKCp Ys=d
036 K7A3 kVAM  092 yGdj gw8G  148 gD+T =ymQ  204 nHxC CKGh  260 Uzqn UjrX
037 Q2O6 2O97  093 LcjZ PT5u  149 9CVX UFAy  205 =Qwf aYfR  261 WZBs zEy3
038 bFVf Qfwx  094 t5i2 bsQ9  150 MeHq =dSY  206 jh/M q5xA  262 j=zY M9JG
039 %x8e XpSG  095 jAX7 8AwW  151 CUhM Ftaj  207 bmQn =UCY  263 5Fsh Au3a
040 WX%T 6cAu  096 %8JB U5WA  152 Oawb e=nC  208 7WG3 ASH6  264 n79W EDgW
041 nFVN 83uv  097 UYth Co6A  153 9PgG rUKq  209 xjE2 96:m  265 g:Mm zb7G
042 ZyJn eFTP  098 Vt44 mpp3  154 dnzb Y3nt  210 eSoY yF8u  266 54Me :yVK
043 WSd3 y7ND  099 sZMJ ReIv  155 dP9d cYzt  211 zLCS ds8B  267 qW=7 5s7I
044 8S=: +Vsx  100 zPi4 co9r  156 VMZN pwnU  212 79vJ 9jJP  268 c2k/ z=ev
045 :vXx orM2  101 7R+V /CvX  157 HsHh kvhs  213 SMwH Ui5h  269 j8X/ 6ind
046 ueww Mbu7  102 vusO LCut  158 TBBs IRy5  214 kJuQ oNsY  270 WoB7 D+Ou
047 FKU= X%s:  103 SauT aY9W  159 rQCA fiFp  215 Grx% ZSM7  271 T4y2 6SfJ
048 Yp8Y U%Yr  104 4Xeb 62Q/  160 2:Q/ ZsJC  216 pfDE DIck  272 ZUfL XHe/
049 cEPs hEdc  105 :Hdc %imD  161 +YSy nrx8  217 PFxT v%/D  273 hIKK %ApN
050 qcC= 8idV  106 N=AT Txp2  162 SYsx Iygm  218 T/mn qMfh  274 BzKz hyIG
051 GHn2 9Anf  107 :XsB IcIw  163 Y+x: bxJS  219 j6+X fNtc  275 ZLp2 m%Tt
052 HaQP E:oQ  108 nVGK +BgG  164 RHXB FktC  220 b2Yv T/5q  276 YjBp oTOG
053 LFSC SPHe  109 XZWC oSCp  165 eWiN 8+97  221 6q%z gUO6  277 fg+F Bz9k
054 BMBI t3kA  110 ik/a 6LfZ  166 sf:j AWXI  222 kSMw issU  278 :R%n UXf+
055 IjMa Fci2  111 527U 6TYH  167 436T V/+e  223 8898 DuoX  279 %Gz+ QbWA

            !!! REMEMBER: Enter the PREFIX PASSWORD first !!!

どこかのテキストファイルに書き出して持ってるとよいだろう。
(表のパスワードは後から同じコマンドで変更できる。)

3.sshでログインする

さて、それでは実際にログインしてみよう。
sshコマンドを利用してログインすると、以下のようにパスワード入力を促される。

[root@BS-PUB-CENT7-02 ~]# ssh blacknon@172.20.100.120
Password 150:

この場合は、暗号化パスワードと作成されたパスワード表の150番を組み合わせて入力してやればよい。
つまり、上の表を例にすると以下のように入力する。(暗号化パスワードとパスワード表のキーワードの間にはスペースが入らない点に注意)

test</span><span style="color: #0000ff;">MeHq =dSY</pre>

これでログインできるようになる。

```shell
[root@BS-PUB-CENT7-02 ~]# ssh blacknon@172.20.XXX.XXX
Password 050:
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.19.0-25-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

  System information as of Sat Jun 25 16:43:15 JST 2016

  System load:  0.0               Processes:           101
  Usage of /:   4.4% of 37.04GB   Users logged in:     1
  Memory usage: 4%                IP address for eth0: 172.28.0.XXX
  Swap usage:   0%                IP address for eth1: 172.20.100.XXX

  Graph this data and manage this system at:
    https://landscape.canonical.com/

182 packages can be updated.
99 updates are security updates.

New release '16.04.1 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

Last login: Sat Jun 25 16:43:17 2016 from 172.20.100.XXX
blacknon@BS-PUB-UBUNTU-01:~$

なお、何度も間違えると「~/.otpw.lock」というファイルが作成され、求められる入力パスワードの数が3個になる場合がある。
この場合は、「暗号化パスワード+パスワード表のキーワード1+パスワード表のキーワード2+パスワード表のキーワード3」というように組み合わせて入力する必要があるようだ。もしくは、「~/.otpw.lock」というファイルを削除してやることでこの状態は解除できる。