ssh -i "<SECRET>.pem" ec2-user@<INSTANCE-ID>.compute.amazonaws.com
The authenticity of host '<INSTANCE-ID>.compute.amazonaws.com (<IP-ADDRESS>)' can't be established.
ED25519 key fingerprint is SHA256:<FINGERPRINT>.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
この質問に安易に「yes」と答えていませんか?
これから、この警告メッセージの意味と、確認せずに「yes」と回答することのセキュリティリスクについて解説します。
まず、この警告の意味について説明します。
これはSSHのホスト認証に関する警告メッセージです。
ホスト認証とは、接続しようとしているサーバーが正当なサーバーであることを確認するためのセキュリティメカニズムです。
このメッセージを適切に検証するためには、接続先サーバーの管理者に連絡を取るか、直接サーバーにアクセスして、サーバーの公開鍵フィンガープリントを確認する必要があります。
Linuxシステムでは、SSHのホスト鍵は/etc/ssh
ディレクトリに保存されています。
標準的なLinuxサーバーには以下のようなSSH関連ファイルが存在します:
ls /etc/ssh
moduli ssh_config ssh_config.d ssh_host_ecdsa_key ssh_host_ecdsa_key.pub ssh_host_ed25519_key ssh_host_ed25519_key.pub sshd_config sshd_config.d
EC2インスタンスでは、2種類のキーペアが作成されました。これは、SSHクライアントとの互換性確保のためです。
- ED25519: 最新の高速で安全な暗号化アルゴリズム。多くの現代のSSHクライアントでサポート
- ECDSA: より広く普及している従来のアルゴリズム。互換性のために維持
サーバー側でED25519公開鍵のフィンガープリントを確認するには:
$ ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:<FINGERPRINT> <HOSTNAME> (ED25519)
このフィンガープリントが、SSHクライアントが表示したものと一致することを確認します。
検証をスキップすることのリスク
ホスト認証を適切に行わない場合、中間者攻撃(Man-in-the-Middle attack)の危険性があります。
中間者攻撃の一般的な手順:
- 攻撃者がDNSポイズニングなどの手法で、正規サーバーへの通信を攻撃者のサーバーに誘導
- 初回接続時や
known_hosts
が削除されている場合、適切なホスト認証なしでは不正なサーバーとの接続が確立される可能性がある
補足情報
/etc
ディレクトリは、Linuxシステムのグローバルな設定ファイルを格納する標準ディレクトリです。これはFilesystem Hierarchy Standard (FHS)で定められています。
SHA256は暗号学的ハッシュ関数の一種で、入力データを256ビットの固定長出力に変換します。同じ入力に対して常に同じハッシュ値が生成されます。
参考文献