TeraTermでパスワードログインを制限しRSAログインのみを許可させる

 「OpenSSHを使いたい」Tipsでは,文中でも触れているように,ssh-keygenコマンドで暗号キーファイルを作っておきながらも,パスワード入力でログインする方法までしか触れていない。このため,TeraTermのウィンドウ上では次のように指定してプレーンパスワード入力をすることになる。

画面
プレーンパスワード入力では,通信データがsshで暗号化されるものの,RSA暗号キーの効力は無い

 ここでは,パスワード入力よりも,よりセキュアなログインを実現するためにRSA暗号キーを利用した方法について紹介しよう。

 まず最初に,ログインをしたいサーバ側のアカウント上でssh-keygenコマンドを実行して暗号キーファイルを作成しておこう。すでに前述したTipsのように作成していれば省いてもよい。ただし,パスフレーズは覚えておくように。

 ちなみにパスワードとパスフレーズの違いについては,「ノンパスワードでログインしたい〜sshプロトコルバージョン1編〜」Tipsなどを参考にしてほしい。

$ ssh-keygen
....................
Enter file in which to save the key (/home/ykida/.ssh/identity):
Enter passphrase:*******************
Enter the same passphrase again:*******************

 接続先となるサーバ上では,RSAキーでログインする際にはアカウントの「公開鍵」が「authorized_keys」ファイルに登録されている必要がある。次のように操作すればよい。

$ cd ~/.ssh
$ cp identity.pub > authorized_keys
または,すでにauthorized_keysファイルが存在する場合には,
$ cat identity.pub >> authorized_keys

$ chmod 600 authorized_keys

 次に,秘密キーファイル「~/.ssh/identity」をWindows上の\Program Files\TERATERM\などにコピーしよう。このファイルは,決して第三者の手に渡ってはならない。このためWindows上の適当なフォルダに置いておくこと自体,セキュアな状態であるかどうかは課題となる点だ。

 Windows 2000やWindowsXPであれば,ログオンパスワードを設定し,「c:\Documents and Settings\[自分のユーザー名]\」下に秘密キーファイルを置いておく方がよいだろう。

 次に,sshdデーモン自体の設定を編集しよう。平分パスワードログインを禁止するために「PasswordAuthentication」を「no」に,RSAキーを有効にするための「RSAAuthentication」が「yes」であることを確認する。

# vi /etc/sshd_config

RSAAuthentication yes
PasswordAuthentication no

RhostsAuthentication no
RhostsRSAAuthentication yes
PermitEmptyPasswords no
PermitRootLogin no

 そして,次のようにsshdを再起動することを忘れなく(RPMパッケージのスクリプト例)。

# /etc/rc.d/init.d/sshd restart

 これで設定は完了だ。続いてTeraTerm上の設定に移る。

画面
画面のように,「Setup」メニューから「SSH Authentication」を選択する

画面
次に「Use RSA key to log in」を選び「Private key file」を押して,先ほどWindows上にコピーしておいた秘密キーファイル「identity」を選択して「OK」ボタンを押す

画面
Setupメニューから「Save setup」を選び,上までの設定を保存しておく。次回以降のTeraTerm起動時には,秘密キーファイルの指定が保存されている

 ここまでの設定が終わったら,Linuxサーバにログイン要求をしてみよう。

画面
プレーンパスワードのラジオボタンがグレーになる。これでRSAキーファイルを利用したログインが可能になった。上の入力欄には,ssh-keygen実行時に設定したパスフレーズを入力すればログインができる