パスワード認証に代わる認証方式として公開鍵認証がよく利用されています。
秘密鍵と公開鍵を生成するコマンドssh-keygenコマンドの使い方を紹介します。
秘密鍵・公開鍵ペアの作成方法
キーペアはssh-keygenコマンドで作成できます
何もオプションを入力しないで作成するとrsaキーが作成されます
# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:EsdIkc4BqYN0jmsgrm3N0WheBuMe0NcX4s1ujgokU6k root@rp4ubuntu
The key's randomart image is:
+---[RSA 3072]----+
| .ooo |
| . ..ooo. . |
|..+oooo+o+ . |
|+.+++ +oo + |
|+ E+.*. So |
| + +* +. o |
|o. *.= + |
|. o =. . . |
| . .. |
+----[SHA256]-----+
[root@rp4ubuntu .ssh]#
[root@rp4ubuntu .ssh]# ls
authorized_keys id_rsa id_rsa.pub
[root@rp4ubuntu .ssh]# cat
authorized_keys id_rsa id_rsa.pub
ed25519を指定してコメントを作成する
# /tmp/id_ed25519を指定、-Cでpubkeyにコメントを記述
ssh-keygen -t ed25519 -C "this key is test key" -f /tmp/id_ed25519
cat /tmp/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIaw2V+AUrte426rTuFH8No1gPhYDR7MNbcLdHoXDkAT this key is test key
-Cで指定しないとユーザ@ホスト名が付加される
キーの暗号化形式について
暗号化形式はデフォルトがrsaです。
選択の基準
- 古いシステムでも利用する -> rsa
- 新しいシステムで高いセキュリティ要求 -> ed25519
これから作るシステムの場合はed25519で良いでしょう。
キーのビット数
キー長(鍵長)は一般的に大きいほど暗号解読が難しくなります。暗号鍵のデータサイズが大きくなり解読に時間がかかります。ただし大きければ良いわけでなく、適切な暗号化形式を選択する必要があります。rsa形式では2048ビットが標準であり適切な鍵長と言われています
特にこだわりがなければデフォルトの鍵長で問題ありません。
パスフレーズの設定
sshキーとして作成する際にはパスフレーズの入力が面倒なので設定しない場合も多いかと思いますが、パスフレーズを設定しておくことで万一秘密鍵が漏洩しても被害を抑えることができます。
より高い安全性を得るためには半角大文字英数記号を含むパスフレーズを設定しましょう。
秘密鍵から公開鍵を生成する
昔生成した秘密鍵の公開鍵が行方不明になることが多いと思いますが、公開鍵は秘密鍵から生成できます。
ssh-keygen -y -f id_ed25519 > /tmp/pubkey
ホストキーをknown-hostsから削除
sshするとwarning remote host identification has changed, It is possible that someone is doing something nasty!という警告が出ることがあります。
これはホストキーが変わってしまった場合に表示されるのでホストキーをサーバから削除することで対応できます。
ssh-keygen -R hostkey.example.com