こんにちは、今日は
ポートフォリオをAWSにデプロイする際に起きたEC2への接続エラー
について書き残します。
以前、デプロイしていた別のアプリのインスタンスを削除し、再度インスタンスを生成、下記を入力してEC2に接続しようとした際に以下のようなエラーが出ました。
ssh -i ###.pem ec2-user@hostname
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:######
Please contact your system administrator.
Add correct host key in /Users/###/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/###/.ssh/known_hosts:1
ECDSA host key for hostname has changed and you have requested strict checking.
Host key verification failed.
原因は同一ホストに対し、認証鍵が違っていたためでした。
(今回はelastic IPは従来のまま、インスタンスのみ生成しなおした)
初めて接続した際に"known_hosts"ファイル内に認証鍵が書き加えられていたようです。
これを下記を入力し取り除きます。
ssh-keygen -R hostname (hostnameはこの場合、AWSのパブリックIPです。)
これにより"known_hosts"ファイルがアップデートされ、過去のファイルとして"known_hosts.old"という名前で保管されます。
この後、再度
ssh -i ###.pem ec2-user@hostname
を入力すると、無事EC2に接続することができました。
#### 以上です!
余談ですが
当初hostnameが何を指しているのかわからなかったため、known_hostsファイルの内容を確認しようとしていました。
ファイルの内容は下記で確認することができます。
ssh-keygen -l -f known_hosts
以下、内容
256 SHA256:############################# hostname (ECDSA)
SHA256というのは、NSA(米国家安全保障局)が考案した「任意の長さのデータから固定長の出力データを返す暗号化技術」のようです。
下記サイトから勉強させていただきました。
https://gaiax-blockchain.com/sha-256#SHA-256-3
また、今回のエラー解決については
https://sayjoyblog.com/aws-ec2-identification-warning/
を参考にさせていただきました。
ありがとうございました!