久しぶりに戻った案件でのSSHエラーの話
以前関わっていた案件に戻った際、同じ環境を再構築してAWS上にあるstaging環境へSSHを試みたところ、エラーが発生しました。その際の解決方法を備忘録として記録します。
SSHコマンド
SSHでエラーが発生
AWS上でEC2インスタンスが稼働しており、以前のキーやアクセス権限もそのまま残っている状態でSSHを実行しましたが、以下のようなエラーが発生しました。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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 ED25519 key sent by the remote host is
Please contact your system administrator.
Add correct host key in /Users/test/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/test/.ssh/known_hosts:2
Host key for ***.***.***.*** has changed and you have requested strict checking.
Host key verification failed.
解決策
接続先サーバーに問題がない場合、以下のコマンドで/Users/test/.ssh/known_hosts
から該当ホストのキー情報を削除できます。この操作により、再度接続が可能になります。
$ ssh-keygen -R {対象のIPアドレス}
このコマンドを実行後、再度SSHを試みたところ、正常に接続できるようになりました

DBクライアントツール(Sequel Ace)のSSH
DBクライアントツールでエラーが発生
私はDBクライアントツールにSequel Aceを使用しています。
こちらも同じインスタンスに対してSSHを利用し、踏み台経由でDB接続しているのですが、同じようなエラーが出ました。(環境名は適当です。)
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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 ED25519 key sent by the remote host is
Please contact your system administrator.
Add correct host key in /Users/test/Library/Containers/com.sequel-ace.sequel-ace/Data/.keys/ssh_known_hosts_strict to get rid of this message.
Offending ED25519 key in /Users/test/Library/Containers/com.sequel-ace.sequel-ace/Data/.keys/ssh_known_hosts_strict:1
Host key for *** has changed and you have requested strict checking.
Host key verification failed.
SSHトンネルは予期せず閉鎖されました。
解決策
Sequel Aceでは、~/.ssh/known_hosts
と同様のファイルが以下のパスに保存されているようです。
/Users/test/Library/Containers/com.sequel-ace.sequel-ace/Data/.keys/ssh_known_hosts_strict
先ほどSSHを用いてインスタンスへアクセスできるようになったことで、~/.ssh/known_hosts
に対象インスタンスへのホストキーが保存されています。そのキーをssh_known_hosts_strict
にコピーしたところ、Sequel AceからもSSH接続が通りました。
エラーの発生理由
SSHが登場する以前、リモート通信ではパスワードや重要な情報が平文で送信されており、第三者に盗聴されるリスクが高い状態でした。また、サーバーのなりすましも容易でした。
SSHではこの問題を解決するため、公開鍵暗号方式を用いた「鍵ペア」(公開鍵と秘密鍵)による認証を行います。一度接続したサーバーの公開鍵情報はknown_hosts
ファイルに保存され、再接続時には、サーバーが提示する署名が、保存されている公開鍵によって正しく検証できるかを確認します。この仕組みにより、中間者攻撃を防ぐことが可能です。
しかし、以下のような状況ではエラーが発生することがあります。
- EC2インスタンスの再作成(新しいインスタンスになるため別のホストキーが使われる)
- Elastic IPの変更(IPアドレスの変更により別インスタンスと誤認される)
今回のケースでは、私が案件に関与していない間に接続先の情報が変更されていたことが原因でした。
久々に案件に戻った際は環境整備に時間がかかりますね。。早く稼働できる状態にするため、つまづくポイントをなくしていきたいです。
コメントを残す