SSHでEC2を接続して、リモートコマンド実行時の警告メッセージを出さないようにする方法


この記事は公開されてから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のオプション設定が「接続する」となってないからです。
file

解決方法

下記のコマンドを実行して、ローカルに保存している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

参考

https://qiita.com/shotaTsuge/items/48bdaccdafa5475d9016

http://www.ajisaba.net/sh/ssh_remote.html

Last modified: 2022-07-29

Author