I'm logging into a Solaris machine using Net::SSH::Perl, then I need to SSH from there to a second Solaris machine.
I get in the first computer fine and then when I SSH into the second it hangs. The second computer is asking for a password.
I've tried using the handler register to SSH_SMSG_STDERR_DATA and SSH_SMSG_STDOUT_DATA constants, and various modifications on the Net::SSH::Perl exmaple to send the password when the user is prompted for it but it dosn't work, just hangs. Can someone give me a clue?
use strict;
use warnings;
use Net::SSH::Perl;
use Net::SSH::Perl::Constants qw( :msg );
my $ssh = Net::SSH::Perl->new($user);
$ssh->login($username, $password);
$ssh->register_handler(
SSH_SMSG_STDERR_DATA, sub{
my ( $ssh, $packet ) = @_;
my $str = $packet->get_str;
if ( $str =~ /Password/ ) {
my $packet = $ssh->packet_start(SSH_CMSG_STDIN_DATA);
$packet->put_str($password);
$packet->send;
}
}
);
$ssh->cmd('ssh second_host');
$ssh->cmd('run cmd on second host');
Update:
I added the SSH keys so when I do 'ssh second_host' it goes without a problem when I use a SSH client to SSH from the first remote to the second remote. But when I'm using Net::SSH::Perl,
it still hangs. The password barrier should be removed.