従来、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