SSH(公開鍵認証)

■ 公開鍵認証とは
公開鍵認証は、秘密鍵と公開鍵の2つの鍵を使ってパスフレーズを暗号化/復号化する認証方式です。これにより、利用者とホストの両方を認証することができるため、ユーザ認証段階でのなりすましや盗聴を防げます。
なお、SSHを外部に公開する場合はクラッカーによるパスワードアタックなどの攻撃が高頻度で行われていますので公開鍵認証設定は必須です。

■ インストール
CentOS5.2をインストールしている場合はデフォルトでインストールされています。
以下のコマンドで確認しましょう。

# rpm -qa | grep ssh
openssh-4.3p2-29.el5
openssh-clients-4.3p2-29.el5
openssh-server-4.3p2-29.el5
openssh-askpass-4.3p2-29.el5

■ 設定
以下の項目を探して編集します。

設定ファイル:/etc/ssh/sshd_config


# rootによるログインを禁止
PermitRootLogin no

# 通常のパスワードのみのログインを禁止
PasswordAuthentication no

# 空パスワードによるログインを禁止
PermitEmptyPasswords no

# Port Forwarding 無効
X11Forwarding no

再起動します。

service sshd restart

■ 公開鍵・秘密鍵の作成
公開鍵認証では、サーバーのユーザディレクトリに公開鍵を配置し、接続するクライアントから秘密鍵を使用して認証します。
ここでは、公開鍵と秘密鍵を作成します。
※ ここからは鍵を作成するユーザで操作してください。

# 鍵生成コマンド(rsa形式)
[testuser@example ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
# 何も入力しないでEnter
Enter file in which to save the key (/home/testuser/.ssh/id_rsa):
Created directory '/home/testuser/.ssh'.
# パスフレーズを入力(任意)
Enter passphrase (empty for no passphrase):
# 再度パスフレーズを入力
Enter same passphrase again:
Your identification has been saved in /home/testuser/.ssh/id_rsa.
Your public key has been saved in /home/testuser/.ssh/id_rsa.pub.
The key fingerprint is:
29:0b:3c:73:57:58:9e:fb:bb:16:c1:41:4f:df:d1:59 testuser@example.com

# 生成された「.ssh」ディレクトリに移動
[testuser@example ~]$ cd .ssh

# 生成されたファイルの確認
[testuser@example .ssh]$ ls -la
合計 20
drwx------ 2 testuser testuser 4096 4月 21 00:48 .
drwx------ 3 testuser testuser 4096 4月 21 00:48 ..
# 秘密鍵

  • rw------- 1 testuser testuser 1743 4月 21 00:48 id_rsa

# 公開鍵

  • rw-r--r-- 1 testuser testuser 400 4月 21 00:48 id_rsa.pub

# 公開鍵の名称を「authorized_keys」に変更
[testuser@example .ssh]$ mv id_rsa.pub authorized_keys

# 公開鍵のパーミッションを変更
[testuser@example .ssh]$ chmod 600 authorized_keys

生成された秘密鍵をクライアントへ移動して、ターミナルを使って接続します。
その際に「id_rsa」を指定すれば接続できます。