別のデータベースでこのsshコマンドを実行しました。
ssh -i $8 -l $9 $1 "set -o pipefail set -o StrictHostKeyChecking=no; mysqldump --single-transaction --skip-lock-tables -u $2 -p$3 -P $4 -h $5 $6" | gzip -c > $7;
これらの変数はコマンドの引数です。
バックエンドのIPアドレスが変わらない限り動作しますが、set -o StrictHostkeyChecking=no
次のメッセージが表示されます。
Offending ECDSA key in /home/admin/.ssh/known_hosts:130
remove with:
ssh-keygen -f "/home/admin/.ssh/known_hosts" -R "172.30.0.63"
ECDSA host key for 172.30.0.63 has changed and you have requested strict checking.
Host key verification failed.
コマンドに問題があるようですが、どこにいるのかわかりません。私は成功せずにいくつかの異なるバリエーションを試しました。
ベストアンサー1
このStrictHostKeyChecking=no
パラメーターは、リモートシェルコマンドではなくsshコマンドにオプションとして渡す必要があります。たとえば、
ssh -i "$8" -o StrictHostKeyChecking=no -l "$9" "$1" "
set -o pipefail; mysqldump --single-transaction --skip-lock-tables -u $2 -p$3 -P $4 -h $5 $6
" | gzip -c > "$7"
(どのローカルシェルを使用しているかは言及していませんが、多くのシェルは単語の分離とファイル名の生成のために引用されていない拡張を実行するため、ここでは引数拡張の周りに二重引用符を付けました。)
このオプションは、可能な MiM 攻撃に対する警告を抑制しません。