I was getting the following error when a script was being executed via cron.

Host key verification failed.
lost connection

But when the script was executed manually from the command line it worked without any issues.

* This worked for me in my particular case. This may not work in every case.

I added the following statements to the script and then ran it from cron.

which scp
which ssh

The output from the two which commands :

/usr/bin/scp
/usr/bin/ssh

What this told me was that the PATH I set in my cron script was forcing the script to use the scp and ssh commands in /usr/bin.

When I ran the same commands from the command line it became clear that it worked without any issues using ssh and scp in /usr/local/bin.

# which ssh;which scp
/usr/local/bin/ssh
/usr/local/bin/scp

My fix was to specify which scp and ssh the script should use.

Before:

scp
ssh

After:

/usr/local/bin/scp
/usr/local/bin/ssh