.ssh の各ファイルの役割:id_ed25519・id_rsa・authorized_keys
SSH を使っていると ~/.ssh/ ディレクトリにさまざまなファイルが作られます。それぞれのファイルが何のためにあるのかをまとめます。
ファイル一覧と役割
| ファイル | 役割 |
|---|---|
id_ed25519 |
Ed25519で生成した秘密鍵。外部に漏らしてはいけない |
id_ed25519.pub |
対応する公開鍵。GitHubや接続先サーバーに登録する |
id_rsa |
RSAで生成した秘密鍵(旧来のアルゴリズム) |
id_rsa.pub |
RSA公開鍵 |
authorized_keys |
サーバー側に置く。接続を許可するクライアントの公開鍵リスト |
known_hosts |
接続済みホストの公開鍵を記録するファイル。自動生成される |
config |
ホストごとのSSH設定(ユーザー名・鍵ファイルパスなど) |
秘密鍵と公開鍵のペア
id_ed25519 と id_ed25519.pub はセットで生成されます。
# Ed25519 で鍵ペアを生成 ssh-keygen -t ed25519 -C "your@email.com"
- 秘密鍵(
id_ed25519):手元のマシンに保管する。絶対に外部に出さない - 公開鍵(
id_ed25519.pub):接続先に渡す鍵。漏れても問題ない
公開鍵の中身を確認するには:
cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... your@email.com
この出力をそのまま GitHub の「SSH keys」や接続先サーバーの ~/.ssh/authorized_keys に貼り付けます。
id_ed25519 と id_rsa の違い
id_ed25519 |
id_rsa |
|
|---|---|---|
| アルゴリズム | Ed25519(楕円曲線) | RSA |
| 鍵長 | 256bit固定 | 2048〜4096bit |
| 速度 | 速い | 遅い |
| セキュリティ | 高い | 十分だが Ed25519 推奨 |
| 対応状況 | 比較的新しい(2014年〜) | 古くから対応済み |
特別な理由がなければ id_ed25519 を使うのが現在の標準です。
authorized_keys(サーバー側のファイル)
authorized_keys はクライアント(手元のPC)ではなく、接続先のサーバーに置くファイルです。
# サーバーの ~/.ssh/authorized_keys に公開鍵を追加 cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
または ssh-copy-id コマンドでまとめて送れます:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server
1行1つの公開鍵を記載でき、複数のクライアントからの接続を許可できます。
known_hosts(自動生成)
known_hosts は初めてSSHで接続したときに自動で書き込まれます。次回以降の接続で「このホストが本物か」を確認するために使われます。
# 内容確認 cat ~/.ssh/known_hosts
サーバーを再構築した際などに「警告: リモートホストの認証が変わった」というエラーが出たら、古いエントリを削除します:
ssh-keygen -R hostname
config(接続設定)
~/.ssh/config を作ると、接続先ごとの設定をまとめられます。
Host github HostName github.com User git IdentityFile ~/.ssh/id_ed25519 Host myserver HostName 192.168.1.10 User ubuntu IdentityFile ~/.ssh/id_ed25519 Port 22
設定後は ssh github や ssh myserver と短く書けます。
まとめ
| ファイル | 置く場所 | 用途 |
|---|---|---|
id_ed25519 |
手元のPC | 秘密鍵(外部流出NG) |
id_ed25519.pub |
手元のPC | 公開鍵(GitHubなどに登録) |
authorized_keys |
接続先サーバー | 接続を許可する公開鍵リスト |
known_hosts |
手元のPC | 接続済みホストの記録(自動生成) |
config |
手元のPC | ホストごとのSSH接続設定 |
SSH鍵の生成方法は「ssh-keygen 入門:SSHキーペアの生成・確認・GitHubへの登録」も参照してください。