PHPのデプロイツールであるdeployerでサーバにデプロイしようとした時deploy:update_code
のタスクで下記のエラーが出ることがあります。
$ ./dep deploy local
...
➤ Executing task deploy:update_code
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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 RSA key sent by the remote host is
SHA256:/xxxxx.
Please contact your system administrator.
Add correct host key in .../.ssh/known_hosts to get rid of this message.
Offending RSA key in .../.ssh/known_hosts:3
...
原因
これはデプロイ先のサーバが再作成・変更されたなどの理由で、IPアドレスが同じなのにサーバのIDが変わってしまったことが原因です。
対応方法
一回だけ発生する場合
サーバの入れ替えなどで一回だけ発生する場合は、known_hostsの設定を削除すれば良いです。
エラーメッセージを見ることでどのファイルの何行目を削除すればは分かります。
先ほどの例だと、下記のようにエラーが出ているので、.ssh/known_hostsファイルの3行目の定義を削除すれば良いです。(作業内容が不安なら作業前のファイルをバックアップしておいてください)
Offending RSA key in .../.ssh/known_hosts:3
何度も発生する場合
デプロイのテストなどで何回もサーバの再作成を行っている時は、下記のようにdeployerのhosts.ymlファイルのsshOptions.UserKnownHostsFileへUserKnownHostsFile: /dev/null
を追記すればknown_hostsへの追記自体が発生しないのでエラーを抑止できます。
dev_server_name:
stage: local
host: XXXX
user: vagrant
branch: develop
sshOptions:
UserKnownHostsFile: /dev/null
こちらもおススメ