utte

ssh-keygen SSH接続に使う鍵のペアを作る

ssh-keygen [-t 種類] [-f ファイル] [オプション]

試してみる

主なオプション

-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 ホスト で古い記録を消します。

関連するコマンド

LinuC 101の出題範囲