Security

SSHの最新事情:ここ数年で何が変わったのか

もしあなたがまだ ssh-keygen -t rsa で鍵を生成しているなら、知識をアップデートする時です。SSHセキュリティの常識はここ数年で大きく変わりました。 2025年現在、何が推奨され、何が廃止されたのかをまとめます。

1. RSA/SHA-1 の実質的な死

SSH Neon Logo

古いRSA鍵(特に ssh-rsa)は署名アルゴリズムに SHA-1 を使用しますが、これは脆弱とみなされています。OpenSSH 8.8(2021年リリース)から、SHA-1を使ったRSA署名はデフォルトで無効化されました。

古いサーバーに接続しようとして、 Unable to negotiate with ...: no matching host key type found. Their offer: ssh-rsa というエラーを見たことはありませんか?これが原因です。

対策: ssh-rsa は捨てましょう。どうしてもRSAが必要な場合でも、rsa-sha2-256rsa-sha2-512 が使われるように設定が必要です。

2. 新標準:Ed25519

RSAのビット数(2048か4096か)で悩むのはもう終わりです。現在の業界標準は Ed25519 です。

  • 高速: 鍵生成も認証も爆速です。
  • コンパクト: 公開鍵の文字列が非常に短く、扱いやすいです。
  • 安全: サイドチャネル攻撃に対して強く設計されています。
# 今、あなたが打つべきコマンド ssh-keygen -t ed25519 -C "your-email@example.com"

3. FIDO2 / U2F 物理セキュリティキー

これが最大のゲームチェンジャーです。OpenSSH 8.2以降、FIDO2セキュリティキー(YubiKeyなど)をネイティブサポートしました。

# ハードウェアトークンを使った鍵生成 ssh-keygen -t ed25519-sk

これを実行すると、PC上には「キーハンドル」と呼ばれる参照ファイルだけが作られます。本物の秘密鍵は物理キーの中にあり、外に出ることはありません。 もしPCがマルウェアに感染しても、物理キーを盗まれない限り、攻撃者はサーバーにSSHできません。

用語解説

  • U2F/FIDO2: 物理デバイスを使った認証の標準規格。
  • Resident Key: 物理キーの中に秘密鍵情報ごと保存する方式。PCが変わっても物理キーさえあればSSHできます。
  • Touch Presence: SSH接続するたびに、物理キーの金属部分に指でタッチすること。「人間がそこにいること」を物理的に証明します。

4. Windowsのネイティブ対応

Windows 10/11には OpenSSH クライアント(とサーバー)が標準搭載されています。 PowerShellやコマンドプロンプトで普通に ssh コマンドが打てます。もはや PuTTY は必須ツールではありません。

2025年のまとめ

  1. ssh-rsadsa使わない
  2. 通常のファイルベースの鍵なら ed25519使う
  3. 重要なサーバーへのアクセスには ed25519-sk (FIDO2) への移行を 検討する