虽然我在PERL中没问题,但是这个下面的错误对我来说是新的,我并不完全清楚它为什么会发生。 有人可以让我理解为什么会出现这种错误以及如何解决这个问题? 这类似于某些模块缺失吗?
No matching cipher found: client 3des-cbc,blowfish-cbc,arcfour server aes128-ctr,aes128-cbc,aes192-ctr,aes192-cbc,aes256-ctr,aes256-cbc at /usr/lib/perl5/site_perl/5.8.8/Net/SSH/Perl/SSH2.pm line 92
答案 0 :(得分:6)
这正是它所说的:
No matching cipher found:
您要连接的SSH服务器不能或不会支持您的SSH客户端知道的任何密码。
client 3des-cbc,blowfish-cbc,arcfour
您的客户可以在CBC 3DES或Blowfish流密码中使用mode或RC4。所有这些都是相当古老的密码,但如果正确使用它们仍然被认为是安全的。
server aes128-ctr,aes128-cbc,aes192-ctr,aes192-cbc,aes256-ctr,aes256-cbc
服务器仅在CTR或CBC模式下使用AES(使用三种标准密钥尺寸中的任何一种)。由于您的客户端不能或不会使用AES,因此服务器和客户端没有共同的密码。基本上,他们不会说任何共同语言,因此无法正常沟通。
at /usr/lib/perl5/site_perl/5.8.8/Net/SSH/Perl/SSH2.pm line 92
根据错误消息的这一部分,您似乎正在使用Net::SSH::Perl模块。 唉,根据documentation,Net :: SSH :: Perl只是普通的不支持AES,因此您无法使用它与该服务器通信(除非添加了AES支持)当然是一些后来的版本)。遗憾。
在评论中,你说你实际上正在使用Net::SFTP,然后在内部使用Net :: SSH :: Perl。如果是这样,您可能需要考虑切换到Net::SFTP::Foreign(Net :: SFTP为compatibility wrapper)或Net::SSH2::SFTP。缺点(如果你认为这样)是这些都不是纯Perl模块:Net :: SFTP :: Foreign需要安装外部ssh
命令,而Net :: SSH2 :: SFTP需要外部libssh2库。
答案 1 :(得分:1)
这是来自Net::SSH::Perl::Kex
模块的消息。它是在调用choose_ciph
对象的Net::SSH::Perl::Kex
方法时生成的。基本上,建立通信参数的客户端/服务器对话没有找到双方都能接受的解决方案
如果您显示代码并可以提供服务器系统的详细信息,那么我们可以提供进一步的帮助
答案 2 :(得分:1)
我不确定如何在Perl中完成配置,但是如果使用Linux本机ssh,则有一个简单的修复方法。解决方法如下:
可以将Linux ssh客户端配置为使用服务器上允许的密码之一。一种方法是使用以下方法修改〜/ .ssh / config:
Host gitlab.com
Ciphers aes256-ctc
我确定Perl模块的用法中有类似的配置。