Perl - 在 Windows 上建立 SFTP 连接的最佳方法

标签 perl sftp put

我需要在 Windows 计算机上使用 SFTP 将文件放入远程目录中。我尝试过 Net::SFTP::Foreign,但无法使用它,因为它需要 IO::Pty,而 Windows 计算机上不可用。最好/最简单的方法是什么?

更新请求的信息:

以下是我正在使用的版本:

Net::SFTP::Foreign:v 1.89

Net::SSH2:v 0.69

Net::SFTP::Foreign::Backend::Net_SSH2:v 0.09

这是我的代码的要点:

$ssh2 = Net::SSH2->new();
$ssh2->connect($host) || die "connect failed";
$ssh2->auth_password($user, $pass) || die "password auth failed";
$sftp = Net::SFTP::Foreign->new(ssh2 => $ssh2,
                                   backend => 'Net_SSH2');
$sftp->error and
  die "Unable to stablish SFTP connection: ". $sftp->error;

现在我只是想建立连接。我需要将文件放在服务器上。我收到的错误如下:

Net::SSH2::timeout(ss, timeout) at C:/Strawberry/perl/site/lib/Net/SSH2.pm line 111, <STDIN> line 1.

最佳答案

首选使用方式Net::SFTP::Foreign在Windows中可能是使用Net::SFTP::Foreign::Backend::Net_SSH2后端(更新:CPAN 提供的 Perl 模块)使用 Net::SSH2在幕后(它已经包含在 Strawberry Perl 中,更新:否则,您将需要自己构建和安装 libssh2,这有时并不像应有的那么容易)。

另一个选择是tell Net::SFTP::Foreign 使用 plink 命令运行 SSH 连接(在模块文档中搜索 plink)。 更新:plinkPuTTY 应用程序发行版的一部分,这是一个非常流行的 SSH 客户端,可能已经安装在该计算机中。

最后你也可以尝试使用Net::SSH::Any它为 Net::SFTP::Foreign 提供自己的后端,并且可以在多个 SSH 客户端和模块之上运行...但它仍处于测试阶段!

关于Perl - 在 Windows 上建立 SFTP 连接的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49889341/

相关文章:

perl - 将中间元素插入数组

node.js - 如何判断SFTP文件是否是Node.js中的目录?

java - JSch sftp 传输剥离 Windows 行结尾

swift - 如何在 Swift 中使用 Alamofire 将参数作为正文发送到 PUT 方法

java - 在不同的计算机上使用 HttpUrlConnection 会导致不同的效果吗?

java - HTTPURLConnection - 内容完整性

regex - 使用 golang 解析 Perl 正则表达式

perl - 如何检测套接字连接何时丢失?

perl - 在 Mojolicious 中创建递归模板 block

linux - 有没有办法通过 shell 脚本上的 SFTP 下载与模式匹配的文件?