Review and merge #15720

Thanks for bringing this in @ror6ax, this is a delicate area of the code, here are the changes I am proposing:
If we raise an exception here it will prevent any other returns from being processed correctly, so I am floating the error up that we got from key_deploy to the cli. This should make it clear to the user what has happened without killing the other connections, which would just result in the commands being fired on remote hosts but not displaying the outcomes.

Thanks @ror6ax! Keep em' coming!