Isso porque o script é citado duas vezes: seu shell está substituindo as variáveis antes de iniciar o comando ssh. Você pode adicionar algumas barras invertidas extras ou usar um citado heredoc assim:
ssh user@host <<'END_COMMANDS'
# ...............^............^ these quotes make the whole document single-quoted
kinit -k -t /path/to/dir/'whoami'.'hostname -s'.keytab 'whoami'/'hostname -f'@host
set -x
echo "Starting HDFS health check" > health_check.log
echo "/path/to" >> health_check.log
hdfs dfs -du -h /path/to &>> health_check.log
echo "**************************************************************************
/path/to/dir" >> health_check.log
hdfs dfs -du -h /path/to/dir &>> health_check.log
subject="HDFS Health Check"
from="[email protected]"
recipients="[email protected]"
headers="subject:$subject
from:$from
Content-Type: text/html
MIME-Version: 1.0"
{ echo "$headers"; echo; cat health_check.log; } | sendmail "$recipients"
set +x
rm health_check.log
END_COMMANDS
Acho mais fácil de manter.