这个错误意味着什么 - “找不到匹配的CIPHER”?

时间:2014-07-02 07:20:13

标签: perl unix ssh

虽然我在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

3 个答案:

答案 0 :(得分:6)

这正是它所说的:

  

No matching cipher found:

您要连接的SSH服务器不能或不会支持您的SSH客户端知道的任何密码。

  

client 3des-cbc,blowfish-cbc,arcfour

您的客户可以在CBC 3DESBlowfish流密码中使用modeRC4。所有这些都是相当古老的密码,但如果正确使用它们仍然被认为是安全的。

  

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模块的用法中有类似的配置。

相关问题