0

我正在尝试使用 Net::SFTP 连接到远程服务器。

我的脚本是:

my %args = ( 
    ssh_args => { 
       user => 'canneu_scp', 
       identity_files => [ '/home/home1/cgrshah/responsys/capgemini.private' ], 
       debug => 1, 
 } );

my $targetserver='files.responsys.net';

my $sftp = Net::SFTP->new($targetserver, %args) 
      or die "could not open connection to $targetserver\n";

但是当我运行它时,我收到一条错误消息:

 Not an ARRAY reference at /usr/lib/perl5/site_perl/5.8.1/Net/SFTP.pm line 36.

谁能帮我这个?

4

1 回答 1

5

这只是在黑暗中的狂野射击,但user选项不应该在哈希值中ssh_args,它处于同一级别。尝试改用此代码:

my $sftp = Net::SFTP->new(
    $targetserver,
    user     => 'canneu_scp', 
    ssh_args => { 
        identity_files => [ '/home/home1/cgrshah/responsys/capgemini.private' ], 
        debug => 1,
    } 
) or die "could not open connection to $targetserver\n";

听起来上面的代码让你走得更远,现在你遇到了问题,因为你的版本Math::BigInt太旧了。我看到了三种前进的方式:

  1. 切换到 RSA 密钥而不是 DSA 密钥
  2. 找到Math::BigInt1.78 或更高版本的 RPM
  3. 手动安装副本Math::BigInt

第三种选择有很多陷阱,如果您决定使用它,我建议您执行以下步骤:

  1. 安装App::cpanminus
    1. 确保你安装了 gcc
    2. wget -O- http://cpanmin.us | perl - --local-lib=~/perl5 App::cpanminus
    3. 添加~/perl5/bin到您的路径
  2. 安装Math::BigInt到你的主目录cpanm --local-lib=~/perl5 Math::BigInt
  3. 添加use lib "$ENV{HOME}/perl5";到脚本的开头,以便它可以找到新模块
于 2010-10-19T15:10:20.170 回答