ssh无法协商:“找不到匹配的密码”,正在拒绝cbc


23

我正在尝试SSH到远程计算机,尝试失败:

$ ssh -vvv admin@192.168.100.14
OpenSSH_7.7p1, OpenSSL 1.0.2o  27 Mar 2018
.....
debug2: ciphers ctos: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
debug2: ciphers stoc: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
debug2: MACs ctos: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: MACs stoc: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: compression ctos: none,zlib@openssh.com
debug2: compression stoc: none,zlib@openssh.com
debug2: languages ctos: 
debug2: languages stoc:
debug2: first_kex_follows 0 
debug2: reserved 0 
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: rsa-sha2-512
Unable to negotiate with 192.168.100.14 port 22: no matching cipher found. Their offer: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc

据我了解日志的最后一个字符串,该服务器提供使用的以下4种加密算法之一:aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc。看起来我的ssh客户端不支持任何一个,因此服务器和客户端无法进一步协商。

但是我的客户确实支持所有建议的算法:

$ ssh -Q cipher
3des-cbc
aes128-cbc
aes192-cbc
aes256-cbc
rijndael-cbc@lysator.liu.se
aes128-ctr
... and there are several more.

如果我明确指定算法如下:

ssh -vvv -c aes256-cbc admin@192.168.100.14

我可以成功登录服务器。

My ~/.ssh/config不包含任何与密码相关的指令(实际上我已将其完全删除,但问题仍然存在)。

那么,为什么没有我的明确指示,客户端和服务器就无法决定使用哪种密码?客户了解服务器支持aes256-cbc,客户了解他可以自己使用它,为什么不仅仅使用它呢?

一些附加说明:

  • 大约一个月前(一个月)没有这种问题。从那以后,我没有更改任何ssh配置文件。我确实更新了已安装的软件包。

  • 有一个描述非常相似的问题的问题,但我的问题没有答案:ssh无法协商-未找到匹配的密钥交换方法

更新:问题已解决

正如telcoM解释的那样,问题出在服务器上:它只建议使用过时的密码算法。我确定客户端和服务器都没有过时。我已登录服务器(顺便说一下,它是Synology,已更新为最新的可用版本),并检查了/etc/ssh/sshd_config。该文件的第一行(!)行是:

Ciphers aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc

这非常奇怪(事实上,该行位于文件的第一行),我确定我之前从未接触过该文件。但是我将行更改为:

Ciphers aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc

重新启动服务器(不知道sshd仅如何重新启动服务),现在问题消失了:我可以像往常一样ssh到服务器。


1
相关-unix.stackexchange.com/questions/333728/…-显示有关如何禁用的信息。
slm

3
我遇到了同样的问题,发现您可以轻松地在Web界面中更改此设置(因为ssh不适用于我...),但是请转到DSM控制面板中的“终端->高级设置”,然后选择“高”配置文件–由于某种原因,我在此处启用了手动选择...我希望这是我做过的事情并且忘记了,而不是以前的DSM更新所做的事情!-现在可以选择aes128-ctr,aes128-gcm,aes192 *,aes256 *,dhge-sha256,curve25519-sha256,hmac-sha2-256
Zak

Answers:


16

-cbc结果证明该算法容易受到攻击。结果,默认情况下,最新版本的OpenSSH现在将默认拒绝这些算法:目前,如果您需要它们,它们仍然可用,但是如您所知,您必须显式启用它们。

最初,当发现该漏洞时(大约在10年前的2008年末!),这些算法只是为了兼容性而放在优先级列表的末尾,但是现在在SSH中弃用这些算法的阶段已经到了默认禁用。根据Cryptography.SE中的此问题,此弃用步骤已在2014年发生。

如果可以的话,请考虑这是一个提醒您更新SSH服务器的提示。(如果这是基于固件的实施,请查看更新的固件是否可用于您的硬件。)


2

您可以从以下位置的文件中更新ssh配置:/ etc / ssh / ssh_config

  1. 启动一个终端。
  2. 将线粘贴到终端中: sudo nano /etc/ssh/ssh_config
  3. 输入密码。按Enter键。将会显示SSH配置文件。
  4. 取消注释行: Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
  5. Ctrl + X。按Enter保存并退出。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.