http://qs1969.pair.com?node_id=870547


in reply to Net::SSH::Perl failback connection

I have worked a solution. It's not very good in that it stores passwords in the clear in the program and it may have other issues but it does seem to work.
#!/usr/bin/perl -w use strict; use Net::SSH::Perl; my @logins = ( [undef,undef], ["myname","mypass"], ["local","localpw"], ["root",undef], ["root","pass1"], ["root","pass2"], ... ["root","passn] ); my $ssh; <open file with server list> while (my $server = <read from file>) { chomp $server; print $server; if (SSHConnect($server)) { <do some work> } } sub SSHConnect { my $server = shift; my $return = 0; $ssh = Net::SSH::Perl->new($server,protocol=>'2,1'); foreach (@logins) { my ($u,$p) = @{$_}; eval { $ssh->login(); }; if (!$@) { $return = 1; last; }; return $return; }
A better solution may be to put login credentials into the server list (and encrypt this) but at this time I don't know what will work for each server and things can change.

Replies are listed 'Best First'.
Re^2: Net::SSH::Perl failback connection
by afoken (Canon) on Nov 10, 2010 at 22:32 UTC

    Use public keys instead of passwords. Use sudo instead of logging in directly as root. In a next step, forbid root logins and password authentication in sshd_config.

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)