NolanPL has asked for the wisdom of the Perl Monks concerning the following question:

I'm writing a script where I have to run a command using Net::SSH::Perl, and it works on two of the three PCs I'm SSHing into, but when it reachest the third here is the error:

Argument "ssh-rsa" isn't numeric in numeric eq (==) at /usr/lib/perl5/ +site_perl/5.8.8/Net/SSH/Perl/Key/RSA1.pm line 94, <FH> line 22. Argument "rpm" isn't numeric in numeric eq (==) at /usr/lib/perl5/site +_perl/5.8.8/Net/SSH/Perl/Key/RSA1.pm line 94, <FH> line 24. Permission denied at ssh.perl line 11

Here is a small script that demonstrates the problem

use Net::SSH::Perl; my $ssh; $ssh = new Net::SSH::Perl("192.168.128.4"); $ssh->login("root");

(This is line 11 in the code)

($x,$y,$z) = $ssh->cmd('pwd');

20080623 Janitored by Corion: Added formatting, code tags, as per Writeup Formatting Tips

Replies are listed 'Best First'.
Re: SSH Permission Denied
by zentara (Cardinal) on Jun 19, 2008 at 19:17 UTC
    You are probably running into a library level mismatch, or some other similar glitch, which Net::SSH::Perl is prone to. Try Net::SSH2, it fixes alot of problems.

    I'm not really a human, but I play one on earth CandyGram for Mongo
Re: SSH Permission Denied
by sub_chick (Hermit) on Jun 20, 2008 at 03:36 UTC
    use Net::SSH::Perl; my $ssh; $ssh = new Net::SSH::Perl("192.168.128.4"); $ssh->login("root"); ($x,$y,$z) = $ssh->cmd('pwd');
    add:
    Use warning; Use strict;
    Also, you may want to change:
    $ssh = new Net::SSH::Perl("192.168.128.4");
    To:
    $ssh = Net::SSH::Perl-> new("192.168.128.4");
    And, is this your entire code? Are all your permissions and passwords the same on each box you're testing?
    The third box may require a passwd in the line:
    $ssh->login("root");
    following "root"


    Es gibt mehr im Leben als Bücher, weißt du. Aber nicht viel mehr. - (Die Smiths)"
Re: SSH Permission Denied
by Khen1950fx (Canon) on Jun 20, 2008 at 05:08 UTC
    #!/usr/bin/perl use strict; use warnings; use Net::SSH::Perl; my $host = 'localhost'; my $pass = 'yourpassword'; my $user = 'yourusername'; my $cmd = 'pwd'; my $ssh = Net::SSH::Perl->new($host, protocol => '1,2', debug => 1); $ssh->login($user, $pass); my($stdout, $stderr, $exit) = $ssh->cmd($cmd); print $stdout, "\n";
      wow! Great... It is working perfectly...