gpt4 book ai didi

perl - Net::SFTP perl rsa 认证

转载 作者:行者123 更新时间:2023-12-01 06:05:14 28 4
gpt4 key购买 nike

我一直在尝试使用包 Net::SFTP 和 RSA key 进行 sftp。我可以在没有密码的情况下手动 sftp 到我的 sftp 服务器,但是在使用该包时它不起作用。我快没主意了。

my $ftp = Net::SFTP->new($HOST, user => $USER, ssh_args => { identity_files => [ "/Users/user/.ssh/id_rsa" ] }, debug => 3 );

它给我以下错误:

Trying pubkey authentication with key file '/Users/tom/.ssh/id_rsa'

FATAL: rsa import failed: Invalid input packet. at /Library/Perl/5.18//Crypt/PK/RSA.pm line 123.

任何帮助将不胜感激,谢谢!

最佳答案

我自己也遇到过。

正如您在评论中指出的那样,问题是我的(和您的)私钥已加密。加密的私钥需要输入密码才能使用,perl模块好像不支持。

您声称在使用此 key 时不需要密码,但也许那是因为 sftp 正在使用您的 ssh 代理?也就是说,您在哪里输入一次密码,然后 key 保留在内存中以供所有 ssh 系列工具使用? perl 模块似乎也不支持代理,但@salva 建议使用 Net::SFTP::Foreign应该解决这个问题。

值得注意的是,我在运行过去在我的工作站上运行良好但在新安装的 perl 上运行的代码时遇到了这个异常。我认为发生的事情是 Net::SSH::Perl 模块添加了对读取私钥的支持或将无法读取私钥更改为 fatal error ,而不是仅仅忽略 key 。我的代码无论如何都没有使用 key ,但现在无法使用该加密 key 。这是固定的:

my $sftp= Net::SFTP->new(
...
ssh_args => [ identity_files => [] ]
);

当然,您可以添加您希望它使用的特定(未加密)身份文件的列表,而不是默认用户的 RSA id。

如果代码不容易编辑,您也可以通过将环境变量 $HOME 设置为其中没有 key 的变量来避免此问题。

关于perl - Net::SFTP perl rsa 认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41964908/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com