Perl - 哪个模块最好用SSH,SFTP在Windows上进行公钥认证

el_*_*rom 3 ssh perl public-key-encryption

带着另一个perl + SSH问题回到这里.

这是我的情况:

我需要使用SSH从服务器A连接到服务器B. 在此SSH连接中,我需要在其他命令旁边建立一些SFTP连接.关于身份验证,我需要使用公钥身份验证.所有这些都在Perl脚本中,服务器A和B都是windows.

你知道任何匹配这些约束的perl模块吗?

我试过了:

  1. Net :: SSH :: Any,但API没有提到公钥认证
  2. Net :: OpenSSH,API表示它不适用于Windows
  3. Net :: SSH :: Perl,API提到了私钥的使用.当我尝试传递它时,它失败了(下面的代码).如果我尝试使用Putty,它会起作用.

额外的问题:我读到存储私钥(在我的情况下在服务器A上)根本不安全(我理解为什么),有没有办法避免这种情况?

码:

my $ssh = Net::SSH::Perl->new("server-ip", identity_files => [ 'path-to-private-key' ], option => ["BatchMode yes"]);
$ssh->login('login');
Run Code Online (Sandbox Code Playgroud)

sal*_*lva 5

我是Net :: OpenSSH和Net :: SSH :: Any的作者.

Net :: SSH :: Any支持公钥认证,但有几个隐藏的要求:

  • 密钥必须是OpenSSH格式(您可以使用PuTTY随播实用程序在格式之间转换密钥,谷歌为它)
  • 带有公钥的文件也是必需的,必须放在"${path_to_private_key}.pub".

除此之外,在过去的几个月里,我一直致力于改进Net :: SSH :: Any,以及在底层Net :: SSH2模块和libssh2库上修复许多重要错误的方法.如果你感到勇敢,你可能想尝试开发版本(你需要三个软件包的git版本,Net :: SSH :: Any,Net :: SSH2和libssh2).

我非常感谢获得有关它的任何反馈,特别是在Windows下运行时.