in reply to Re^2: Compiling Net::SSH::Perl
in thread Compiling Net::SSH::Perl

Password authentication is supported by Net::OpenSSH, it's just that it uses Expect (well, actually IO::Pty) for supporting it.

Replies are listed 'Best First'.
Re^4: Compiling Net::SSH::Perl
by LinuxUser2008 (Acolyte) on Jun 07, 2010 at 11:36 UTC
    Hi salva,
    I am using OpenSSH as you had suggested but, i installed the Perl Module, but i am unable to get the sample script to run..
    Following is the code that i am trying to run

    #!/usr/bin/perl use strict; use warnings; use Net::OpenSSH; use Expect; select STDOUT; $| = 1; select STDERR; $| = 1; my $password = "nutterHead"; my $timeout = 20; my $debug = 0; my $ssh = Net::OpenSSH->new('netter@sap1902', password => $password); # After a successful sudo operation, it doesn't request the password # again until some time after, handling this undeterministic behaviour # is a pain in the ass, so we just clear any cached credentials # calling "sudo -k" first as follows: my ($pty, $pid) = $ssh->open2pty("sap1902") or die "open2pty failed: " + . $ssh->error . "\n"; my $expect = Expect->init($pty); $expect->raw_pty(1); $debug and $expect->log_user(1); $debug and print "waiting for password prompt\n"; $expect->expect($timeout, ':') or die "expect failed\n"; $debug and print "prompt seen\n"; $expect->send("$password\n"); $debug and print "password sent\n"; $expect->expect($timeout, "\n") or die "bad password\n"; $debug and print "password ok\n"; while(<$pty>) { print "$. $_" }


    perl expect.pl ssh: illegal option -- M Usage: ssh [options] host [command] Options: -l user Log in using this user name. -n Redirect input from /dev/null. -F config Config file (default: ~/.ssh/config). -A Enable authentication agent forwarding. -a Disable authentication agent forwarding (default). -X Enable X11 connection forwarding. -x Disable X11 connection forwarding (default). -i file Identity for public key authentication (default: ~/.ssh/ +identity) -t Tty; allocate a tty even if command is given. -T Do not allocate a tty. -v Verbose; display verbose debugging messages. Multiple -v increases verbosity. -V Display version number only. -q Quiet; don't display any warning messages. -f Fork into background after authentication. -e char Set escape character; ``none'' = disable (default: ~). -c cipher Select encryption algorithm -m macs Specify MAC algorithms for protocol version 2. -p port Connect to this port. Server must be on the same port. -L listen-port:host:port Forward local port to remote address -R listen-port:host:port Forward remote port to local address These cause ssh to listen for connections on a port, and forward them to the other side by connecting to host:por +t. -D port Enable dynamic application-level port forwarding. -C Enable compression. -N Do not execute a shell or command. -g Allow remote hosts to connect to forwarded ports. -1 Force protocol version 1. -2 Force protocol version 2. -4 Use IPv4 only. -6 Use IPv6 only. -o 'option' Process the option as if it was read from a configuratio +n file. -s Invoke command (mandatory) as SSH2 subsystem. -b addr Local IP address. open2pty failed: unable to establish master SSH connection: ssh master + exited unexpectedly


    Could you tell me what could be wrong..

    Regards,
    Blub:|
      Net::OpenSSH is failing because SUN ssh client is in the path before the OpenSSH one. Use the ssh_cmd option to tell the module where to find the right client:
      my $ssh = Net::OpenSSH->new($host, ... ssh_cmd => '/opt/openssh/bin/ssh');