公開鍵暗号によるセキュリティ強化

SSHのユーザ認証方法には、パスワード認証と鍵交換(公開鍵認証)方式の
2通りの方法が用意されています。

パスワード認証 OSのパスワードを用いたユーザ認証
公開鍵暗号方式 公開鍵を登録し、ペアとなる秘密鍵を持つユーザのみ認証

OSのパスワードを用いた場合、IDとパスワードさえわかってしまえば
誰でもそのホストへログインすることができてしまいますが、
鍵交換方式を利用することにより、ID/パスフレーズ+秘密鍵ファイルが
揃わないとホストへログインすることができません。

パスフレーズ:鍵につけられたパスワード。OSのパスワードと同じでなくともよい。

sshdの設定変更

sshdの設定ファイルは、多くの場合、/etc/sshd/sshd_config となっています。
この設定ファイルから下記ディレクティブの設定を変更します

ディレクティブ名 設定値 説明
RSAAuthentication yes RSA認証を許可するか
PubkeyAuthentication yes 公開鍵認証を許可するか
AuthorizedKeysFile %h/.ssh/authorized_keys 公開鍵の設置場所
PasswordAuthentication no パスワード認証を許可するか

なお、今回の設定とは直接関係ありませんが、パスワード認証を使用している場合
「PermitEmptyPasswords no」としてパスワードが無い接続は拒否しましょう。

上記の設定が終了したら、sshdを再起動して設定を有効にしてください。
再起動方法はOSによりまちまちですが、
# /etc/init.d/sshd restart
とすれば、再起動できるかと思います。

RSA鍵の生成と公開鍵の登録

RSA鍵はクライアントマシンで行います。
生成すると、秘密鍵と公開鍵のペアが作成されますが、秘密鍵
ネットワーク経由で転送すると、改竄・漏洩のリスクが発生するからです。

TeraTermなどではGUIで簡単に作成できるため、ssh-keygenコマンドによる
生成方法を説明します。

作業ユーザとホームディレクトリの確認
$ whoami
foobar
$ echo $HOME
/home/foobar/

RSA鍵ペアの生成(2048ビットの鍵)
$ ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key (/home/foobar/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):<パスフレーズ入力>
Enter same passphrase again:<パスフレーズ入力(確認)>
Your identification has been saved in /home/foobar/.ssh/id_rsa.
Your public key has been saved in /home/foobar/.ssh/id_rsa.
The key fingerprint is:
86:0f:48:a4:35:60:9b:83:8f:e5:5f:e3:a4:be:82:01 foobar@example.com
上記コマンドを実行すると、「id_rsa」と「id_rsa.pub」が作成されます。
※ここでは、/home/foobar/.ssh に生成。

生成したRSA鍵のうち、公開鍵である「id_rsa.pub」を接続先ホストに転送します。
転送後、sshd_configの「AuthorizedKeysFile」で指定したファイルに追記します。
$ cat id_rsa.pub >> /home/foobar/.ssh/authorized_keys

ログイン

秘密鍵を利用して、ホストに接続します。
※ここでは便宜上、接続先ホストを hogehoge.jpとする。

$ ssh -i .ssh/id_rsa hogehoge.jp

以上