|Come for the quick hacks, stay for the epiphanies.
I suspect the error comes from IO::Pty when it attempts to allocate a pseudo terminal. The '-t' option will force allocation of a pseudo terminal, but this may not make any difference for you as your application appears to already be attempting to do so, and failing.
Net::OpenSSH uses IO::Pty to allocate a pseudo terminal and this, in turn, uses IO::Tty. The latter is documented to be system dependent. You might check the IO::Tty documentation to ensure the system you are on is listed as known working. In particular, if you are on Windows it says you must be using Cygwin. On the other hand, it says the list is out of date.
A pseudo terminal will be allocated if you are using password authentication. If you are using password authentication, even if you can get pseudo terminals to work, you might be better off to heed the warning in the Net::OpenSSH documentation:
Note that using password authentication in automated scripts is a very bad idea. When possible, you should use public key authentication instead.