SYNOPSIS

  use Net::SSH qw(ssh ssh_cmd issh sshopen2 sshopen3);

  ssh('user@hostname', $command);

  issh('user@hostname', $command);

  ssh_cmd('user@hostname', $command);
  ssh_cmd( {
    user => 'user',
    host => 'host.name',
    command => 'command',
    args => [ '-arg1', '-arg2' ],
    stdin_string => "string\n",
  } );

  sshopen2('user@hostname', $reader, $writer, $command);

  sshopen3('user@hostname', $writer, $reader, $error, $command);

DESCRIPTION

Simple wrappers around ssh commands.

For an all-perl implementation that does not require the system ssh command, see Net::SSH::Perl instead.

SUBROUTINES

ssh [USER@]HOST, \s-1COMMAND\s0 [, \s-1ARGS\s0 ... ]

Calls ssh in batch mode.

issh [USER@]HOST, \s-1COMMAND\s0 [, \s-1ARGS\s0 ... ]

Prints the ssh command to be executed, waits for the user to confirm, and (optionally) executes the command.

ssh_cmd [USER@]HOST, \s-1COMMAND\s0 [, \s-1ARGS\s0 ... ]
ssh_cmd \s-1OPTIONS_HASHREF\s0

Calls ssh in batch mode. Throws a fatal error if data occurs on the command's \s-1STDERR\s0. Returns any data from the command's \s-1STDOUT\s0. If using the hashref-style of passing arguments, possible keys are: user (optional) host (required) command (required) args (optional, arrayref) stdin_string (optional) - written to the command's STDIN

sshopen2 [USER@]HOST, \s-1READER\s0, \s-1WRITER\s0, \s-1COMMAND\s0 [, \s-1ARGS\s0 ... ]

Connects the supplied filehandles to the ssh process (in batch mode).

sshopen3 \s-1HOST\s0, \s-1WRITER\s0, \s-1READER\s0, \s-1ERROR\s0, \s-1COMMAND\s0 [, \s-1ARGS\s0 ... ]

Connects the supplied filehandles to the ssh process (in batch mode).

EXAMPLE

use Net::SSH qw(sshopen2); use strict;

my $user = "username"; my $host = "hostname"; my $cmd = "command";

sshopen2("$user\@$host", *READER, *WRITER, "$cmd") || die "ssh: $!";

while (<READER>) { chomp(); print "$_\n"; }

close(READER); close(WRITER);

FREQUENTLY ASKED QUESTIONS

Q: How do you supply a password to connect with ssh within a perl script using the Net::SSH module?

A: You don't (at least not with this module). Use \s-1RSA\s0 or \s-1DSA\s0 keys. See the

   quick help in the next section and the ssh-keygen\|(1) manpage.

A #2: See Net::SSH::Expect instead.

Q: My script is \*(L"leaking\*(R" ssh processes.

A: See \*(L"How do I avoid zombies on a Unix system\*(R" in perlfaq8, IPC::Open2, IPC::Open3 and \*(L"waitpid\*(R" in perlfunc.

GENERATING AND USING SSH KEYS

1 Generate keys

Type: ssh-keygen -t rsa And do not enter a passphrase unless you wanted to be prompted for one during file copying. Here is what you will see: $ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/User/.ssh/id_rsa): Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/User/.ssh/id_rsa. Your public key has been saved in /home/User/.ssh/id_rsa.pub. The key fingerprint is: 5a:cd:2b:0a:cd:d9:15:85:26:79:40:0c:55:2a:f4:23 User@JEFF-CPU

2 Copy public to machines you want to upload to

\*(C`id_rsa.pub\*(C' is your public key. Copy it to \*(C`~/.ssh\*(C' on target machine. Put a copy of the public key file on each machine you want to log into. Name the copy \*(C`authorized_keys\*(C' (some implementations name this file \*(C`authorized_keys2\*(C') Then type: chmod 600 authorized_keys Then make sure your home dir on the remote machine is not group or world writeable.

AUTHORS

Ivan Kohler <[email protected]>

Assistance wanted - this module could really use a maintainer with enough time to at least review and apply more patches. Or the module should just be deprecated in favor of Net::SSH::Expect or made into an ::Any style compatibility wrapper that uses whatver implementation is avaialble (Net::SSH2, Net::SSH::Perl or shelling out like the module does now). Please email Ivan if you are interested in helping.

John Harrison <[email protected]> contributed an example for the documentation.

Martin Langhoff <[email protected]> contributed the ssh_cmd command, and Jeff Finucane <[email protected]> updated it and took care of the 0.04 release.

Anthony Awtrey <[email protected]> contributed a fix for those still using OpenSSH v1.

Thanks to terrence brannon <[email protected]> for the documentation in the \s-1GENERATING\s0 \s-1AND\s0 \s-1USING\s0 \s-1SSH\s0 \s-1KEYS\s0 section.

COPYRIGHT

Copyright (c) 2004 Ivan Kohler. Copyright (c) 2007-2008 Freeside Internet Services, Inc. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

BUGS

Not \s-1OO\s0.

Look at IPC::Session (also fsh, well now the native \s-1SSH\s0 \*(L"master mode\*(R" stuff)

RELATED TO Net::SSH…

For a perl implementation that does not require the system ssh command, see Net::SSH::Perl instead.

For a wrapper version that allows you to use passwords, see Net::SSH::Expect instead.

For another non-forking version that uses the libssh2 library, see Net::SSH2.

For a way to execute remote Perl code over an ssh connection see IPC::PerlSSH.

ssh-keygen\|(1), ssh\|(1), IO::File, IPC::Open2, IPC::Open3