1

Perl 5.8.8 にNet::SFTP::Foreignをインストールし、以下のコードを使用してセキュア FTP サーバーにログインしようとしています。

use Net::SFTP::Foreign;
my $host = $tt->get_ftp_server_address();
my $sftp = Net::SFTP::Foreign->new("$host",
                                     {user=>$tt->get_location_user_name(),
                                     password=>$tt->get_location_user_password(),
                                     port=>'22'});

私が呼び出そうとした行はNet::SFTP::Foreign->new、エラーをスローすることなく失敗します。

4

6 に答える 6

3

「このライブラリを適切に動作させるには、Windows マシンに他に何かインストールする必要がありますか?」というコメントに反応しています。ここ。

readmeには、 PATH から到達可能な外部 SSH2 クライアントが必要であると記載されています。それが問題でしょうか?このモジュールは、Windows で動作することが知られています。

于 2010-02-25T15:47:37.040 に答える
2

コンストラクターは、ハッシュへの参照ではなく、ハッシュテーブルを期待していると思います。呼び出しで中かっこを削除してみてください。

my $sftp = Net::SFTP::Foreign->new("$host",
                                     user=>$tt->get_location_user_name(),
                                     password=>$tt->get_location_user_password(),
                                     ポート=>'22');
于 2010-02-25T15:36:29.640 に答える
2

デバッグをオンにする可能性に加えて、ドキュメントには次のように明確に記載されていることに注意してください。

エラーの明示的なチェックは、常にコンストラクター呼び出しの後に含める必要があります。

my $sftp = Net::SFTP::Foreign->new(...);
$sftp->error and die "SSH connection failed: " . $sftp->error;

したがって、そのエラー メッセージを出力することが、問題を診断するための最初のステップになります。

于 2010-02-25T19:36:34.123 に答える
1

Cygwin Perl を使用しない限り、パスワード認証は Windows ではサポートされません。また、Expect もインストールする必要があります。

開発バージョン (現在、1.56_08) は Net::SSH2 で使用できるため、リッチな SFTP クライアントとパスワード認証を利用できます。

Net::SFTP::Foreign は plink (Putty に付属のユーティリティ) でも動作します。この組み合わせは Windows でのパスワード認証をサポートしますが、完全に安全というわけではありません。

于 2010-02-25T17:38:28.383 に答える