12.2.4. 鍵ベース認証の使用

システムのセキュリティをさらに強化するには、通常のパスワード認証を無効にすることで鍵ベース認証を強制することができます。これを行うには、/etc/ssh/sshd_config の設定ファイルを vinano などのテキストエディターで開き、PasswordAuthentication オプションを以下のように変更します:
PasswordAuthentication no
sshscp または sftp を使用してクライアントマシンからサーバーに接続できるようにするには、以下の手順に従って認証鍵ペアを生成します。鍵はユーザーごとに別々に生成する必要がある点に注意して下さい。
Red Hat Enterprise Linux 6 は、デフォルトでは SSH プロトコル 2 と RSA 鍵を使用します (詳細は 「プロトコルのバージョン」 を参照)。

重要

以下の手順を root で完了すると、その鍵を使用できるのは root のみとなってしまうためです。

注記

システムを再インストールする場合に、以前に生成された鍵ペアを保持したいときは、~/.ssh/ ディレクトリをバックアップして下さい。再インストール後に、このディレクトリをホームディレクトリにコピーします。この手順は、root を含むシステム上の全ユーザーを対象に実行できます。

12.2.4.1. 鍵ペアの生成

以下の手順に従い、SSH プロトコルのバージョン 2 用の RSA 鍵ペアを生成します。
  1. RSA 鍵ペアを生成するには、シェルプロンプトで以下を入力します:
    ~]$ ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/john/.ssh/id_rsa):
  2. Enter キーを押して、新規作成された鍵用のデフォルトの場所 (~/.ssh/id_rsa) を確認します。
  3. パスフレーズを入力します。プロンプトが表示されたら再入力して確認します。セキュリティ上の理由により、アカウントにログインする時と同じパスワードは使用しないで下さい。
    この後に、以下のようなメッセージが表示されます:
    Your identification has been saved in /home/john/.ssh/id_rsa.
    Your public key has been saved in /home/john/.ssh/id_rsa.pub.
    The key fingerprint is:
    e7:97:c7:e2:0e:f9:0e:fc:c4:d7:cb:e5:31:11:92:14 john@penguin.example.com
    The key's randomart image is:
    +--[ RSA 2048]----+
    |             E.  |
    |            . .  |
    |             o . |
    |              . .|
    |        S .    . |
    |         + o o ..|
    |          * * +oo|
    |           O +..=|
    |           o*  o.|
    +-----------------+
  4. ~/.ssh/ ディレクトリのパーミッションを変更します:
    ~]$ chmod 700 ~/.ssh
  5. ~/.ssh/id_rsa.pub の内容を接続先のマシンの ~/.ssh/authorized_keys にコピーします。ファイルが既に存在している場合は、そのファイルの最後に追加して下さい。
  6. 次のコマンドを使用して ~/.ssh/authorized_keys ファイルのパーミッションを変更します:
    ~]$ chmod 600 ~/.ssh/authorized_keys
以下の手順に従い、SSH プロトコルのバージョン 2 用の DSA 鍵ペアを生成します。
  1. DSA 鍵ペアを生成するには、シェルプロンプトで以下を入力します :
    ~]$ ssh-keygen -t dsa
    Generating public/private dsa key pair.
    Enter file in which to save the key (/home/john/.ssh/id_dsa):
  2. Enter キーを押して、新規作成された鍵用のデフォルトの場所 (~/.ssh/id_dsa) を確認します。
  3. パスフレーズを入力します。プロンプトが表示されたら再入力して確認します。セキュリティ上の理由により、アカウントにログインする時と同じパスワードは使用しないで下さい。
    この後に、以下のようなメッセージが表示されます:
    Your identification has been saved in /home/john/.ssh/id_dsa.
    Your public key has been saved in /home/john/.ssh/id_dsa.pub.
    The key fingerprint is:
    81:a1:91:a8:9f:e8:c5:66:0d:54:f5:90:cc:bc:cc:27 john@penguin.example.com
    The key's randomart image is:
    +--[ DSA 1024]----+
    |   .oo*o.        |
    |  ...o Bo        |
    | .. . + o.       |
    |.  .   E o       |
    | o..o   S        |
    |. o= .           |
    |. +              |
    | .               |
    |                 |
    +-----------------+
  4. ~/.ssh/ ディレクトリのパーミッションを変更します:
    ~]$ chmod 700 ~/.ssh
  5. ~/.ssh/id_dsa.pub の内容を接続先のマシンの ~/.ssh/authorized_keys にコピーします。ファイルが既に存在している場合は、そのファイルの最後に追加して下さい。
  6. 次のコマンドを使用して ~/.ssh/authorized_keys ファイルのパーミッションを変更します:
    ~]$ chmod 600 ~/.ssh/authorized_keys
以下の手順に従い、SSH プロトコルのバージョン 1 用の RSA 鍵ペアを生成します。
  1. RSA 鍵ペアを生成するには、シェルプロンプトで以下を入力します:
    ~]$ ssh-keygen -t rsa1
    Generating public/private rsa1 key pair.
    Enter file in which to save the key (/home/john/.ssh/identity):
  2. Enter キーを押して、新規作成された鍵用のデフォルトの場所 (~/.ssh/identity) を確認します。
  3. パスフレーズを入力します。プロンプトが表示されたら再入力して確認します。セキュリティ上の理由により、アカウントにログインする時と同じパスワードは使用しないで下さい。
    この後に、以下のようなメッセージが表示されます:
    Your identification has been saved in /home/john/.ssh/identity.
    Your public key has been saved in /home/john/.ssh/identity.pub.
    The key fingerprint is:
    cb:f6:d5:cb:6e:5f:2b:28:ac:17:0c:e4:62:e4:6f:59 john@penguin.example.com
    The key's randomart image is:
    +--[RSA1 2048]----+
    |                 |
    |     . .         |
    |    o o          |
    |     + o E       |
    |    . o S        |
    |       = +   .   |
    |      . = . o . .|
    |       . = o o..o|
    |       .o o  o=o.|
    +-----------------+
  4. ~/.ssh/ ディレクトリのパーミッションを変更します:
    ~]$ chmod 700 ~/.ssh
  5. ~/.ssh/identity.pub の内容を接続先のマシンの ~/.ssh/authorized_keys にコピーします。ファイルが既に存在している場合は、そのファイルの最後に追加して下さい。
  6. 次のコマンドを使用して ~/.ssh/authorized_keys ファイルのパーミッションを変更します:
    ~]$ chmod 600 ~/.ssh/authorized_keys
システムにパスフレーズを記憶させる設定方法については 「ssh-agent の設定」 を参照して下さい。

重要

秘密鍵は、個人使用向けのものであり、他人には決して教えないことが重要です。

12.2.4.2. ssh-agent の設定

ssh-agent 認証エージェントを使用すると、パスフレーズを保存することができるためリモートマシンとの接続を開始する度にパスフレーズを入力する必要がなくなります。GNOME を実行している場合は、ログイン時には常にパスフレーズを求めるプロンプトを表示して、セッション中を通してそのパスフレーズを記憶させておくように設定できます。それ以外の方法として、特定のシェルプロンプト用にパスフレーズを保存しておくことも可能です。
以下の手順に従い、GNOME セッション中にパスフレーズを保存します。
  1. openssh-askpass パッケージがインストールされていることを確認します。インストールされていない場合は、「パッケージのインストール」 の Red Hat Enterprise Linux に新規パッケージをインストールする方法を参照して下さい。
  2. パネルから システム設定自動起動するアプリ の順に選択します。自動起動するアプリの設定 が起動し、利用可能な自動起動するプログラムの一覧が表示されたタブがデフォルトで表示されます。
    自動起動するアプリの設定

    図12.1 自動起動するアプリの設定

  3. 右側の 追加 ボタンをクリックして、コマンド フィールドに /usr/bin/ssh-add と入力します。
    新規アプリケーションの追加

    図12.2 新規アプリケーションの追加

  4. 追加 をクリックした後に、新しく追加した項目の横のチェックボックスにチェックマークが付いていることを確認してください。
    アプリケーションの有効化

    図12.3 アプリケーションの有効化

  5. 一度ログアウトしてから再度ログインします。パスフレーズの入力を求めるダイアログボックスが表示されます。これ以降は、sshscp または sftp によるパスワードの入力を要求されることはありません。
    パスフレーズの入力

    図12.4 パスフレーズの入力

特定のシェルプロンプト用のパスフレーズを保存するには、以下のコマンドを使用します:
~]$ ssh-add
Enter passphrase for /home/john/.ssh/id_rsa:
ログアウト時には、パスフレーズは記憶されない点に注意して下さい。仮想コンソールまたはターミナルウィンドウにログインする度にコマンドを実行する必要があります。