I have used the Net::SSH::Expect module seceral times in work-related projects. In your output (side tip: wrap it in <code></code> tags for readability), I see in the message (for Net::SSH::Expect) "SSHAuthenticationError Login timed out." I would begin by enabling logging by adding the following to the Net::SSH::Expect->new() call (where $outfile is a file location the script can write to):
log_file => $outfile,
exp_debug => 1,
exp_internal => 1,
Next, I would check that the prompt you expect to see for a successful login matches those checked for by the modules, and if necessary you may need to specify the prompt to expect, or alter the method you are using (depending on the way you are doing so in your code).
Hope that helps.