2026.06.29(月) / 23:02
SSH鍵とは何か ー ssh-keygen コマンドを理解する ー
- ID
- 38673
- Published
- 2026-06-29 23:02
- Modified
- 2026-06-29 23:02
- Author
- khiro
- Categories
- デフォルト
エックスサーバーへSSH接続しようとしたところ、公開鍵認証が必要だった。
これまでGitHubやGitLabでSSHを利用したことはあったが、「なぜこのコマンドで鍵が作られるのか」「それぞれのオプションは何を意味しているのか」は理解できていなかった。
今回は、実際にSSH鍵を作成した経験をもとに、ssh-keygen コマンドについて整理していく。
SSH鍵とは
SSH鍵とは、SSH接続を安全に行うための認証情報である。
一般的なログインではユーザー名とパスワードを入力する。
一方、公開鍵認証では
- 公開鍵(Public Key)
- 秘密鍵(Private Key)
という2つの鍵を利用して認証を行う。
秘密鍵は自分だけが保持し、公開鍵だけをサーバーへ登録する。
サーバーは、登録された公開鍵と対になる秘密鍵を持っている利用者だけ接続を許可する。
なぜ公開鍵認証が安全なのか
パスワード認証では、パスワードの推測や総当たり攻撃(ブルートフォース攻撃)の対象となる可能性がある。
一方、公開鍵認証では、サーバーに登録した公開鍵と対になる秘密鍵を所有していなければ認証できない。
秘密鍵は自分だけが保持し、サーバーへ送信されることもないため、安全性が高い認証方式である。
そのため、多くのクラウドサービスやサーバーでは公開鍵認証の利用が推奨されている。
今回使用したコマンド
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C "example"
このコマンドを分解して見ていく。
ssh-keygen
ssh-keygen
ssh-keygen は SSH Key Generator の略である。
名前の通り、SSHで利用する鍵を生成するプログラムである。
実行すると
- 秘密鍵
- 公開鍵
の2つが生成される。
-t
-t ed25519
-t は type(種類) を指定するオプションである。
今回は
ed25519
という暗号方式を利用した。
代表的な方式は次の通り。
| 種類 | 特徴 |
|---|---|
| RSA | 古くから使われている方式 |
| ECDSA | 楕円曲線暗号 |
| ED25519 | 高速で安全性が高く、現在推奨されている方式 |
現在は、新しく鍵を作成する場合は ED25519 を利用することが推奨されている。
-f
-f ~/.ssh/id_ed25519
-f は file を意味する。
生成する鍵の保存場所とファイル名を指定する。
今回は
~/.ssh/id_ed25519
という名前で保存した。
実際には次の2つのファイルが生成される。
id_ed25519
秘密鍵
id_ed25519.pub
公開鍵
秘密鍵には .pub が付かず、公開鍵には .pub が付く。
~/.ssh ディレクトリ
~/.ssh/
はSSH関連の設定を保存するディレクトリである。
例えばMacでは次のようなファイルが保存されている。
~/.ssh/
├── config
├── known_hosts
├── id_rsa
├── id_ed25519
└── id_ed25519.pub
用途ごとに鍵を分けて管理することも多い。
例えば
- GitHub
- GitLab
- VPS
- クラウドサーバー
など、それぞれ専用の鍵を作成することもできる。
-C
-C "example"
-C は Comment(コメント) の略である。
暗号化には影響せず、鍵を識別しやすくするための情報である。
公開鍵を見ると
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... example
のようになっており、最後の
example
がコメントである。
例えば
- github
- gitlab
- macbook-air
- home-server
など、用途が分かる名前を付けておくと管理しやすい。
秘密鍵と公開鍵の役割
今回生成された2つの鍵には、それぞれ異なる役割がある。
秘密鍵
id_ed25519
秘密鍵は、自分だけが保管する。
サーバーへ送ってはいけない。
GitHubへ公開してはいけない。
ブログへ掲載してはいけない。
第三者に渡ってしまうと、不正ログインされる危険性がある。
公開鍵
id_ed25519.pub
公開鍵はサーバーへ登録する。
公開鍵だけではログインできないため、第三者に知られても問題ない。
SSH認証の仕組み
SSH認証の流れを簡単に表すと次のようになる。
ローカルPC
│
├── 秘密鍵
│
└── SSH接続
│
▼
サーバー
│
└── 公開鍵
サーバーは公開鍵を持ち、ローカルPCは秘密鍵を持つ。
この2つが一致することで認証が成功する。
そのため、パスワードを送信することなく、安全にログインできる。
まとめ
今回初めてSSH鍵を一から作成したことで、公開鍵認証の仕組みを理解することができた。
今まではコマンドをコピーして実行するだけだったが、それぞれのオプションの意味を理解すると、どのサーバーでも応用できる知識になる。
今後はGitHubやGitLabだけでなく、VPSやクラウドサーバーなど、さまざまな環境でもSSH公開鍵認証を活用していきたい。