1

まず、私は完全な sftp と ssh の初心者であり、Perl にはかなり慣れていません。リモート サーバーに接続してファイルを取得するスクリプトを作成しようとしています。どちらのサーバーも Windows 2003 ボックスです。サーバーに sftp サーバーをインストールし、filezilla クライアントを使用して、同じ IP アドレス (セキュリティ上の理由からコード サンプルから削除)、ユーザー名、およびコードで指定されたポート番号を使用して接続できます。

私が持っているコードの接続ブロックは次のとおりです。

my $sftp = Net::SFTP::Foreign->new(
    host    => 'xx.xxx.xxx.xxx', 
    user    => 'radiospx', 
    port    => '22', 
    ssh_cmd => "C:\\Program Files\\putty\\plink.exe",
    more    => [qw(-v -i )]
); 

$sftp->error and die " SSH connection failed: " . $sftp->error;

スクリプトを実行すると、次の出力が得られます。

ホスト "sftp" を検索して接続を開くことができません: ホストが存在しません SSH 接続に失敗しました: import.pl 行 34 でリモート サーバーへの接続が切断されました

誰かが私が間違っているところを提案できますか? filezillaが完全に機能するため、サーバーは間違いなくsftp接続を受け入れています。

4

1 に答える 1

2

-i渡す plink オプションには引数moreが必要です。

my $sftp = Net::SFTP::Foreign->new(
    host    => 'xx.xxx.xxx.xxx', 
    user    => 'radiospx', 
    port    => '22', 
    ssh_cmd => "C:\\Program Files\\putty\\plink.exe",
    more    => ['-v', -i => "C:\\path\\to\\the\\private.key"]
); 

$sftp->error and die " SSH connection failed: " . $sftp->error;
于 2011-07-04T12:15:33.067 に答える