ssh-keygen SSH接続に使う鍵のペアを作る
ssh-keygen [-t 種類] [-f ファイル] [オプション]試してみる
ssh-keygen -t ed25519 -N "" -f ~/.ssh/id_demo -q鍵のペアを作ります。-t は種類、-N はパスフレーズ(ここでは空)、-f は保存先、-q はメッセージを出さない指定です。
ls -l ~/.ssh2つのファイルができます。秘密鍵(id_demo)は自分だけが読める権限になっています。
cat ~/.ssh/id_demo.pub公開鍵(.pub)の中身を見ます。サーバーに登録するのは、こちらです。
ssh-keygen -l -f ~/.ssh/id_demo.pub鍵のフィンガープリント(指紋)を表示します。
ssh-keygen -p -P "" -N "secret" -f ~/.ssh/id_demo秘密鍵のパスフレーズを、空から secret に変更します。
ssh-keygen -y -P "secret" -f ~/.ssh/id_demo秘密鍵から、公開鍵を取り出して表示します。
主なオプション
-t 種類 | 鍵の種類を指定する(ed25519、rsa、ecdsa) |
|---|---|
-b ビット数 | 鍵の長さを指定する(rsa で使う) |
-f ファイル | 鍵を保存するファイルを指定する |
-N パスフレーズ | パスフレーズを指定する(""で空) |
-C コメント | 公開鍵につけるコメントを指定する |
-l | 鍵のフィンガープリントを表示する |
-p | 秘密鍵のパスフレーズを変更する |
-R ホスト | known_hosts から、そのホストの記録を削除する |
解説
鍵のペアで認証する
SSH では、パスワードの代わりに、鍵のペアで認証できます。鍵のペアは、秘密鍵と公開鍵の2つのファイルです。秘密鍵は自分のところに置いて、他人に渡しません。公開鍵は、接続先のサーバーに登録します。ssh-keygen は、このペアを作るコマンドです。
作られるファイル
-f を省略すると、鍵の種類ごとに、~/.ssh/id_ed25519、~/.ssh/id_rsa といった名前で保存されます。その公開鍵は、.pub を付けたファイルです。秘密鍵の権限は 600 でなければならず、緩いと SSH は使うことを拒否します。~/.ssh ディレクトリは 700 にします。
公開鍵の登録
公開鍵の中身を、接続先のサーバーの ~/.ssh/authorized_keys に追記すると、その鍵で入れるようになります。ssh-copy-id ユーザー@ホスト を使うと、この追記を自動でやってくれます。このページのターミナルはネットワークがないので、接続は試せません。
パスフレーズ
パスフレーズは、秘密鍵を暗号化するためのものです。秘密鍵のファイルが盗まれても、パスフレーズがなければ使えません。ここでは例のために空にしていますが、実際には設定するほうが安全です。
鍵の種類
現在は、ed25519 が推奨されます。短くて速く、安全です。rsa は互換性が高いのですが、-b 4096 のように長めにします。
known_hosts
初めて接続したサーバーの公開鍵は、~/.ssh/known_hosts に記録されます。サーバーを入れ替えて警告が出たときは、ssh-keygen -R ホスト で古い記録を消します。