.ssh の各ファイルの役割:id_ed25519・id_rsa・authorized_keys

スポンサーリンク

.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_ed25519id_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 githubssh myserver と短く書けます。


まとめ

ファイル 置く場所 用途
id_ed25519 手元のPC 秘密鍵(外部流出NG)
id_ed25519.pub 手元のPC 公開鍵(GitHubなどに登録)
authorized_keys 接続先サーバー 接続を許可する公開鍵リスト
known_hosts 手元のPC 接続済みホストの記録(自動生成)
config 手元のPC ホストごとのSSH接続設定

SSH鍵の生成方法は「ssh-keygen 入門:SSHキーペアの生成・確認・GitHubへの登録」も参照してください。