6

Net::SSH::Perl を使用して perl スクリプトを作成しようとしています。

sshを介してディレクトリでlsを実行したいだけなので、現時点では非常に簡単です。

#!/usr/bin/perl

use Net::SSH::Perl;

@KEYFILE = ("/user/.ssh/id_rsa");
$ssh = Net::SSH::Perl->new($host, debug=>1, identity_files=>\@KEYFILE)

my $host = "hostname";
my $user = "user";

#-- set up a new connection
my $ssh = Net::SSH::Perl->new($host, debug=>1, identity_files=>\@KEYFILE)
#-- authenticate
$ssh->login($user);
#-- execute the command
my($stdout, $stderr, $exit) = $ssh->cmd("ls -l /home/user/");

これは機能しますが、唯一の問題は、コマンドを実行するために踏み台サーバーを経由する必要があることです。秘密鍵を要塞に転送しますが、サーバー上にある必要がある鍵を使用するのではなく、転送された鍵を perl で使用する方法に少しこだわっています。

これは可能ですか?

ありがとう

4

2 に答える 2

3

踏み台サーバーに接続するときは、エージェント転送を有効にする必要があります。

my $ssh = Net::SSH::Perl->new(
    $host,
    debug          => 1,
    identity_files => \@KEYFILE,
    options        => [
        'ForwardAgent yes',
    ],
);

他の ssh Perl モジュールとその長所と短所については、Net::OpenSSH vs Net::SSH:: modulesを参照してください。

于 2013-04-16T16:37:00.903 に答える