Looking at the docs:
$ssh->login([ $user [, $password [, $suppress_shell ] ] ]) [snip] By default, Net::SSH::Perl will open a channel with a shell on it. Thi +s is usually what you want. If you are tunneling another protocol ove +r SSH, however, you may want to prevent this behavior. Passing a true + value in $suppress_shell will prevent the shell channel from being o +pened (SSH2 only).
{begin speculation}
SSH1 does not support multiple channels, only SSH2 does AFAIK. The ChannelMgr.pm which opens the channels is only active for SSH2 and generates the error message you see. Given the default is try SSH1 first, then SSH2 your script is making the connection via SSH2. This in itself may be the issue as your "broken" SSH implementation does not support SSH2 (says it only supports one channel) but may not do the right thing to tell Net::SSH::Perl that it isa/wants SSH1. Easy to test, just set it to work on SSH1 only and see if it chokes.
I presume that setting Net::SSH::Perl to only use SSH1 (all your widget aparrently supports) will cause it to fail. You will then need to look at the handshake coming from your widget to see why it is not recognised as SSH1 and patch Net::SSH::Perl to recognise it and talk SSH1.
{noitaluceps dne}
In reply to Re^3: SSH with Net::SSH::Perl fails "one session per SSH Client"
by tachyon-II
in thread SSH with Net::SSH::Perl fails "one session per SSH Client"
by geo_pmonk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |