SSH接続のキーペアの作成&更新(最新の 4096 bit RSA 版)

従来、SSHキーは 2048 bit での作成が主流だったので、現在もそのまま使い続けている人が多いと思いますが、セキュリティ上そろそろ 4096 bit へアップグレードしておくと良いでしょう。その手順を紹介します。置き換えだけでなく、新たにSSHを設定する際も下記と同じ手順です。

先ず 4096 bit RSA キーの作成方法ですが

$ ssh-keygen -b 4096

これをコマンドラインで実行します。質問される項目は、ファイル名とパスフレーズ(&再入力)の2種類だけです。基本はどちらもエンターで良いでしょう。

$ ssh-keygen -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/foo/.ssh/id_rsa): (エンター)
Enter passphrase (empty for no passphrase):(エンター)
Enter same passphrase again:(エンター)
Your identification has been saved in id_rsa.
Your public key has been saved in id_rsa.pub.
The key fingerprint is:
SHA256:uqWzrNSC89DAAKBu9xL4yGzR//+n5zW+CRYkkZ6smqo foo@local
The key's randomart image is:
+---[RSA 4096]----+
|+          ..    |
|o          ..    |
|o         o...   |
|.oo        +o    |
| =o+    S .  .   |
|+ =++. . .    .  |
| =+o+oo +    o o |
|.  =.oo*    .o+ o|
|   E+o*+...o=. +.|
+----[SHA256]-----+

これで、秘密鍵(id_rsa)と公開鍵(id_rsa.pub)のキーペアがホームディレクトリ下の .ssh ディレクトリ内に作成されているはずです。

次に作成した公開鍵を ssh-copy-id コマンドで、サーバ側のホームディレクトリの .ssh ディレクトリへコピーします。

$ ssh-copy-id -p 22 -i ~/.ssh/id_rsa foo@server

各自の変更箇所ですが “-p 22” はサーバ側のSSHで使用しているポート番号です。
(注:デフォルトでは 22/TCP を使うのですが、そもそもこのポート番号はセキュリティ上、変更しておくほうが良いでしょう)

次に “foo@server” の部分もユーザ名@サーバ名(IPアドレス)に置き換えてください。

コマンドを実行すると、サーバログイン時のパスワードを求められます。パスワードが認証されると公開鍵がサーバの .ssh ディレクトリへコピーされ、これで、ログインできる準備は整いました。

$ ssh -p 22 -i ~/.ssh/id_rsa foo@server

これでログインできる筈です。-p と -i オプションは省略可能なので、適時省略してください。

最後に注意点として、秘密鍵はサーバへコピーしないでください。そして秘密鍵は必ずバックアップを取っておきましょう。紛失したら管理者の作業が必要となるし、あなたが管理者ならばサーバにログインできなくなって一大事です。

ちなみに、今使っているキーペアが 2048 bit なのか 4096 bit なのか分からん!という方へそれぞれの公開鍵の例を示します。4096 bit の方はこれだけ長いので、短いなと思ったら更新しちゃいましょう。そもそも既に 4096 bit だったとしても、定期的にキーペアを変更するのがセキュリティ的にオススメです。

2048 bit RSA 公開鍵の例

ssh-rsa BBAAB3NzaC1yc2EAAAADAQABAAABAQCsbWBUOHkOKzXmqWVlWTWbGgU5ckeqJJaCUiOEvc0yyjjYCdfJozQts69OsYbIT/obRmDfyYK/8enmI9fD34Q0GAC2/0r8dMVVaO13X6iew6ETQIT6HM7v+Y+IqkYx5B+hWOtw7JGZ/eWd5gCn0N7w3OLFmwnmxEFKo0KoaHEzRRIUvMwTlSrxLYT3AB3T3E7WxVGX+F7M1cDpmXDsJKPU6ZI7W4XqZlQn2mxoKInbVDSv1c5RWz92lBaUPSvIFL0DXfS1kR94GB6RYb1RSOfoz9bAioBcXVmfTJ0GshxgMdRB5mrDrBlROzsLm4fHYNAXB2gT0nFaWhfaE0liCWTh foo@local

4096 bit RSA 公開鍵の例

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC5pk1MuSJGQ8tdlRO+b0IHLMSwMH4uI9RWsUPWSbcJ6n8SqI452hdj9i0YZvC6H0Pmwh/4uIlTGaeSE4ZxCMEi6hAPkl87EqLAUho/0lsBPiA+n1eas5PwbSRYVnB2vFEx/L/MTjaCXELFtS5qvTN4GPGHw7WJAKXzjnTGNbmU7QGjHBSL/5k7szZrVMq7k7pmglBUTzUDwoChA3ZPGP/91kBXfffMZwJzW4tYHPMSFX/uVz00nwCzqayNLF3wOzWG0/l5IvcefadXWSj2kip2d4/2Sjg22qCEVpsjofyEfUO/5+FN5Nq88KZUtxZ9jEoxXOUtBmk4t1CVek+rLgvqzPGRiKpVSV9zVZE1M0QKuKbzhz7QtX8Ip7CRyahZ4tJAL/cX0YkLqFbxS6owHKKihS5FCXQSWSw5qHlzQ//b0HfQGHYwFyAkUKCaBLD7anm06QtwpRLuCGzCpOfBNa7+OSs3UVARvKU7GdZ5KVGnCiLCb5UxhtWw84uSACG0d08SdJPQmfO8/W/N+PX0MZfRCW82maM0aa8/75+HlRsPc+lu8+evw1MBNpyI5vKOMsUTERw2yEz7dGNGN988Jd23atjBnq33QWkkw6yxK3eO0AJMcJ01mSwLLG4dPg00HSZ8HOuOmrgU2HHCjF+YazQ0UreWLxFMxnhNtGYE+lIvyQ== foo@local