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

Hi all,

I use perl quite often but this is the first time I need to use the Net::OpenSSH module.

I need to connect in master mode with a nologin account but I haven't managed so far.

I checked that the connection works with ssh (openssh v4.3p2) directly from the command line:

 ssh -i /path-to-key -T -l user -o BatchMode=yes host "ls -la"

I need to use the option -T to avoid trouble in server's side security. How can I select that option in Net::OpenSSH?

At the moment my code is:

 my $ssh = Net::OpenSSH->new($host, user => $varuser, master_opts => [-n], key_path => $private_key_path, strict_mode => 0, ssh_cmd => $ssh_bin, timeout => $timeout, default_ssh_opts => [-o => "batchmode=yes"]);

Thanks in advance

Replies are listed 'Best First'.
Re: Net::OpenSSH -T option
by bdo (Pilgrim) on Aug 09, 2013 at 00:22 UTC
    I believe the option 'RequestTTY=no' should have the same effect as '-T' (but not tested) so you could pass that with the BatchMode option.
Re: Net::OpenSSH -T option
by salva (Canon) on Aug 10, 2013 at 06:58 UTC
    Adding -T to the ssh command line used to start the master connection is useless.

    Once you a have Net::OpenSSH object connected to the remote host, you can run remote commands without a tty using the tty flag:

    $ssh->system({tty => 0}, 'ls -l');

      Thanks. It seems that RequestTty=no is only available for more recent versions of openssh, unfortunately. I could use the -T option but that's ok now, the tty flag will do