【问题标题】:What does this error mean - "No matching CIPHER found"?这个错误是什么意思 - “没有找到匹配的 CIPHER”?
【发布时间】:2019-01-28 18:52:05
【问题描述】:

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

【问题讨论】:

  • 什么情况下会报错?
  • 当您尝试连接到主机时会发生这种情况吗?
  • 可能是目标机器不支持所使用的加密方式。
  • 她需要配置她的配置文件或尝试使用 Net::OpenSSH 而不是 Net::SSH::Perl 进行连接
  • @Amareesh 然后阅读我的其他评论并阅读此tek-tips.com/viewthread.cfm?qid=1389656

标签: perl unix ssh


【解决方案1】:

这正是它所说的:

No matching cipher found:

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

client 3des-cbc,blowfish-cbc,arcfour

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

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 just plain 不支持 AES,因此您将无法使用它与该服务器通信(除非稍后添加 AES 支持版本,当然)。对不起。

在 cmets 中,您说您实际上在使用 Net::SFTP,然后在内部使用 Net::SSH::Perl。如果是这样,您可能需要考虑切换到 Net::SFTP::Foreign(对于 Net::SFTP 有 compatibility wrapper)或 Net::SSH2::SFTP。缺点(如果你这么认为的话)是这些都不是纯 Perl 模块:Net::SFTP::Foreign 需要安装外部 ssh 命令,而 Net::SSH2::SFTP 需要外部libssh2 库。

【讨论】:

  • “您要连接的 SSH 服务器不能或不会支持您的 SSH 客户端知道的任何密码” 密钥交换比同意密码。 “此错误来自Net::SSH::Perl::SSH2 模块”。不,它不是,除非是间接的——你也可以说错误来自 OP 的 prgram。生成此消息的是密钥交换模块Net::SSH::Perl::Kex
  • @Borodin:错误消息明确指出“未找到匹配的密码”。 SSH 连接设置当然比同意密码更多,但这就是错误所在。至于消息的来源,从技术上讲,您是对的,但实际上并没有太大区别。重要的是它来自 Net::SSH::Perl 发行版,特别是它告诉我们 OP 正在使用该模块,而不是那里的各种其他 Perl SSH 客户端实现之一。
  • 我基本同意,但这不是你在回答中所说的,这是误导性的。如果没有太大区别那你为什么把它归咎于错误的模块呢?
  • @Borodin:因为我没有费心阅读源代码,因此没有意识到它是由(使用不当)croak 而不是普通的旧die 生成的.无论如何,我已经编辑了我的答案,提到了消息的实际来源,甚至感谢你的更正。
【解决方案2】:

我不确定如何在 Perl 中完成配置,但如果您使用 Linux 本机 ssh,有一个简单的解决方法。这是解决方案:

Linux ssh 客户端可以配置为使用服务器上允许的密码之一。一种方法是修改 ~/.ssh/config :

Host gitlab.com
     Ciphers aes256-ctc

我确信 Perl 模块使用中也有类似的配置。

【讨论】:

    【解决方案3】:

    这是来自Net::SSH::Perl::Kex 模块的消息。它是在调用Net::SSH::Perl::Kex 对象的choose_ciph 方法时生成的。本质上,建立通信参数的客户端/服务器对话没有找到双方都可以接受的解决方案

    如果您展示您的代码并提供服务器系统的详细信息,那么我们可以提供进一步的帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-29
      • 2011-03-01
      相关资源
      最近更新 更多