Uma maneira comum de fazer isso é usar o comando trap para informar o script de shell para ignorar o SIGINT (gerado pelo Control-C) e, em seguida, para reativar o SIGINT em um subshell antes de seu comando ser executado.
trap "" INT
HOSTS=(MACHINE1 MACHINE2 MACHINE3 MACHINE4 MACHINE5)
for i in "${HOSTS[@]}"
do
echo "$i"
(trap - INT; ssh -q "$i" "uname -a")
done