發生原因
這個錯誤是在筆者多次登入遠端主機失敗後所產生。
錯誤訊息
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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:<xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /root/.ssh/known_hosts:16
ECDSA host key for <xx.xx.xx.xx> has changed and you have requested strict checking.
Host key verification failed.
注:錯誤訊息中SHA256與遠端主機ip己經過處理
解決方法
錯誤訊息中有寫道
Offending ECDSA key in /root/.ssh/known_hosts:16
代表~/.ssh/known_hosts中的第16行是導致這次錯誤的原因,因此從 ~/.ssh/known_hosts中把它刪除即可。有三種方式可以達成這個目的,條列如下:
方法一
使用vi編輯器打開~/.ssh/known_hosts檔案,並手動刪除該行。
sudo vi ~/.ssh/known_hosts
方法二
這個方法不需要進入檔案裡面,直接使用sed來刪除檔案中的某一行。
sed '16 d' ~/.ssh/known_hosts
方法三
使用ssh-keygen -R來刪除~/.ssh/known_hosts中所有與ip地址<xx.xx.xx.xx>有關的key。
ssh-keygen -R <xx.xx.xx.xx>