sshの鍵を作成するときの、アルゴリズムについて確認
手元のssh-keygenで確認すると、 -t に渡せるのは以下の5種類
- ecdsa
- ecdsa-sk
- ed25519
- ed25519-sk
- rsa
TL;DR
- 通常用途なら
ed25519を選ぶ - ハードウェアトークンを使えるなら
ed25519-skが最有力 - 古いシステム互換が必要なときだけ
rsaを検討
比較表
| 方式 | セキュリティ | 速度 | 鍵サイズ | 互換性 | 使いどころ |
|---|---|---|---|---|---|
ed25519 | 高い | 高速 | 小さい | 新しめ環境で良好 | ほぼ第一候補 |
ed25519-sk | 非常に高い(秘密鍵をデバイス外へ出さない) | 高速 | 小さい | 対応環境が必要 | YubiKeyなどを使う場合 |
ecdsa | 高い | 高速 | 小さい | 比較的広い | ed25519 が使えない場合 |
ecdsa-sk | 非常に高い(FIDO/U2F前提) | 高速 | 小さい | 対応環境が必要 | ハードウェア保護を優先する場合 |
rsa | 十分(3072/4096 bitなら) | 署名は遅め | 大きい | 最も広い | レガシー互換が必須の場合 |
各方式のポイント
ed25519
- 現在のSSH鍵としてバランスがよく、標準的な推奨
- 鍵が短く、処理も速い
- 新しいOpenSSH環境なら基本的に問題なく利用可能
ed25519-sk / ecdsa-sk
-skはセキュリティキー(FIDO2/U2F)を使う方式- 秘密鍵の実体をトークン側に保持できるため、盗難・漏えい耐性が高い
- 開発端末・CI・サーバー側すべてで対応確認が必要
ecdsa
- 広く使われており性能も良い
- ただし、新規採用では
ed25519を優先することが多い
rsa
- 互換性重視で今も必要な場面がある
- 使う場合は最低でも
3072bit、できれば4096bit - 新規で積極採用する理由は少ない
用途別のおすすめ
- 個人開発PC ->
ed25519 - セキュリティ最優先(ハードウェアキーあり) ->
ed25519-sk - 古いサーバーや機器との接続が必要 ->
rsa(3072/4096)
作成コマンド例
# 標準推奨
ssh-keygen -t ed25519 -a 100 -C "your_email@example.com"
# ハードウェアキーを使う場合
ssh-keygen -t ed25519-sk -C "your_email@example.com"
# 互換性優先(レガシー向け)
ssh-keygen -t rsa -b 4096 -a 100 -C "your_email@example.com"
-a はKDFラウンド数で、パスフレーズ付き秘密鍵の耐性向上に効く。
運用環境で問題なければ、やや高めに設定しておくとよい。