この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
前提
・接続先EC2の秘密鍵が実行用EC2に保存していること
・秘密鍵の権限が600であること(権限設定方法:chmod 600 xxxxx.pem)
・実行OS:RedhatLinux 8.2
背景
EC2からリモートコマンドを実行すると、次のようなエラーメッセージが出てSSH接続が失敗してしまいます。
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
原因
StrictHostKeyCheckingのオプション設定が「接続する」となってないからです。
解決方法
下記のコマンドを実行して、ローカルに保存しているknown_hostsファイルにある10.20.0.180の行を削除します。
コマンド例:
$ ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null server_name
スクリプト実装例:
EC2_KEY_FILE=/temp/xxxxx.pem
LINE_EC2_PRIVATE_IP=192.168.0.5
REMOTE_LOG_01=/WORK/test.log
CHK_CMD_01_STR="sudo hostname > "${REMOTE_LOG_01}""
ssh -o 'StrictHostKeyChecking no' -i $EC2_KEY_FILE ec2-user@"${LINE_EC2_PRIVATE_IP}" $CHK_CMD_01_STR
CHK_CMD_01_RT=`ssh -i $EC2_KEY_FILE ec2-user@"${LINE_EC2_PRIVATE_IP}" "cat "${REMOTE_LOG_01}""`
echo CHK_CMD_01_RT:$CHK_CMD_01_RT