秘密鍵/公開鍵の基本的な設定

秘密鍵/公開鍵の基本的な設定についてのメモです。

作り方

ssh-keygenコマンドによって、鍵のペアを作成します。

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/crohaco/.ssh/id_rsa): [鍵の保存場所]
Enter passphrase (empty for no passphrase): [鍵のパスフレーズ]
Enter same passphrase again: [鍵のパスフレーズ(確認)]
Your identification has been saved in /home/crohaco/.ssh/id_rsa.
Your public key has been saved in /home/crohaco/.ssh/id_rsa.pub.
The key fingerprint is:
07:6f:09:58:6b:9c:c8:f4:0c:6b:7a:4c:b9:e3:72:67 crohaco
The key's randomart image is:
+--[ RSA 2048]----+
|       .o.   o o=|
|      . ... o Eoo|
|       oo. + +  .|
|       .... + oo.|
|        S  . + .+|
|            o .o |
|           .    .|
|                 |
|                 |
+-----------------+

上記コマンドによりユーザは以下の入力を求められます。

鍵の保存場所

-fオプションに続けて鍵名を指定すると、カレントパスに秘密鍵と公開鍵のペアが保存されます。公開鍵には自動的に「.pub」という拡張子がつきます。
鍵名を省略すると「id_rsa」と「id_rsa.pub」がそれぞれ「~/.ssh/」配下に保存されます。

すでに存在する場合は上書きの可否が聞かれます。

鍵のパスフレーズ

秘密鍵に対するパスフレーズです。
通常であれば入力するべきですが、用途によっては省略することもできます。
ただし、1~4文字のパスフレーズは登録できないようです。

また、SSHで使用する場合であっても、入力したパスフレーズがネットワーク上を流れることはありません。

パスフレーズとパスワードはほぼ同じ意味ですが、MSによると以下のような違いがあるようです。

  1. パスフレーズは通常、スペース (空白) を含むが、パスワードは含まない
  2. パスフレーズは、ほとんどの単語と比較して非常に長く、一般人が記憶できる羅列された文字の長さよりも長く、理解しやすい

パスフレーズを変更する場合は以下の書式でssh-keygenコマンドを実行します。

# man ssh-keygenで見れます。
$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]

変更するための入力項目が足りない場合は、対話的に入力を求められます。

$ ssh-keygen -p
Enter file in which the key is (/home/crohaco/.ssh/id_rsa): [鍵の保存場所]
Enter old passphrase: [鍵の旧パスフレーズ]
Key has comment '/home/crohaco/.ssh/id_rsa'
Enter new passphrase (empty for no passphrase): [鍵の新パスフレーズ]
Enter same passphrase again: [鍵の新パスフレーズ(確認)]
Your identification has been saved with the new passphrase.

SSHでのログイン設定

SSHで公開鍵認証のみを有効化するための設定を行います。

サーバ側の設定

/etc/ssh/sshd_configの設定の一部を以下のように変更します。

 
#RSAAuthentication yes
RSAAuthentication no
 
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
 
PasswordAuthentication no

公開鍵の登録ファイルを作ります。

$ cat id_rsa.pub >> ~/.ssh/authorized_keys

authorized_「keys」ということで複数の公開鍵を登録することができます。1行につき1公開鍵という構成です。

クライアント側の設定

クライアント側では自動的に~/.ssh/id_rsaで認証を試みますが-iオプションで別の秘密鍵を指定することもできます。

$ ssh crohaco@192.168.100.100 -i ~/.ssh/private

鍵を使って認証を試みる場合、初回の認証では秘密鍵のパスフレーズを聞かれます。上記の例であれば~/.ssh/privateという秘密鍵に対するパスフレーズを入力する必要があります。

また、エイリアスで接続できるように~/.ssh/configに以下を追記します。

Host x220
    User crohaco
    Hostname 192.168.100.100
    Port 22
    IdentityFile ~/.ssh/private

詳しい設定項目は「man ssh_config」で確認することができます。

~/.ssh/configを保存しエイリアスでアクセスすると、パスワードを聞かれることなく指定した秘密鍵でログインすることができました。