当我尝试ssh时如何解决'找不到匹配的mac的错误'

时间:2018-07-24 14:43:28

标签: openssh hmacsha1

以下是我遇到的错误: 找不到匹配的mac:客户端hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160 @ openssh.com,hmac-sha1-96,hmac-md5-96服务器hmac-sha2-512-etm@openssh.com, hmac-sha2-256-etm @ openssh.com,umac-128-etm @ openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128 @ openssh.com

4 个答案:

答案 0 :(得分:1)

您收到此错误,因为客户端和服务器无法就消息身份验证代码的哈希算法达成共识。

更多信息在这里: https://blog.tinned-software.net/debug-ssh-connection-issue-in-key-exchange/

答案 1 :(得分:1)

在了解基本知识和根本原因之前,我已经在相当长的时间内努力解决了这个问题。分享经验,以便为他人提供帮助。

我试图通过SSH连接到目标服务器,并得到如下错误

ssh -A <someTargetServerNameOrIP>
  

无法与XX.XX.XX.XX端口1234协商:找不到匹配的MAC。   他们的报价:   hmac-sha2-512-etm @ openssh.com,hmac-sha2-256-etm @ openssh.com,umac-128-etm @ openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128 @ openssh.com

此错误的根本原因是在源计算机上,受支持的MAC不包含来自目标服务器的MAC。

在计算机上的命令行中查看此运行情况

ssh -Q mac
output would be something like
hmac-sha1
hmac-sha1-96
hmac-sha2-256
hmac-sha2-512
hmac-md5
hmac-md5-96
umac-64@openssh.com
umac-128@openssh.com

因此,现在为了使用自己的服务器不支持的Mac选择连接到目标服务器,必须显式提供目标服务器支持的Mac之一。例如我们从错误消息中提取 hmac-sha2-512 并尝试连接,它将被连接

ssh -m hmac-sha2-512 -A <someTargetServerNameOrIP>

该问题的另一个变体是密码不匹配,如下所示:

  

$ ssh -A无法与之协商   XX.XX.XX.XX端口1234:找不到匹配的密码。他们的报价:   aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc

根本原因是密码不匹配

通过以下方式检查支持的密码

ssh -Q cipher output would be something like
3des-cbc
aes256-cbc
rijndael-cbc@lysator.liu.se
aes128-ctr
aes192-ctr
aes256-ctr
aes128-gcm@openssh.com
aes256-gcm@openssh.com

因此,现在为了使用选择的服务器不支持的密码连接到目标服务器,必须显式提供目标服务器支持的密码之一。例如我们从错误消息中提取hmac-sha2-512并尝试连接,它将被连接

  

ssh -m aes128-cbc -A

有关此的更多详细信息,请参见 https://diego.assencio.com/?index=688f3a536f63c43566c94f0818d9ecf3

希望这对某人有帮助。

答案 2 :(得分:1)

在centOS / RHEL 7服务器上,同时尝试通过TMA脉冲安全工具访问服务器,并在/ var / log / secure上获得以下错误

[root@rhellinuxserver ~]# cat /var/log/secure| grep -iE "no matching"
Aug 24 07:02:07 rhellinuxserver sshd[29958]: Unable to negotiate with 172.21.112.111 port 16899: no matching MAC found. Their offer: hmac-sha1,hmac-sha1-96,hmac-md5,hmac-md5-96,hmac-ripemd160,hmac-ripemd160@openssh.com [preauth]
Aug 24 07:15:24 rhellinuxserver sshd[30702]: Unable to negotiate with 172.21.112.111 port 33541: no matching MAC found. Their offer: hmac-sha1,hmac-sha1-96,hmac-md5,hmac-md5-96,hmac-ripemd160,hmac-ripemd160@openssh.com [preauth]

要解决此问题,请按如下所述编辑sshd_config文件

 # cat -n /etc/ssh/sshd_config | grep -i MAcs 

找到线

MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com 

替换为

MACs hmac-sha1,hmac-sha1-96,hmac-md5,hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,hmac-ripemd160 

这将添加以下额外的MAC算法。

hmac-sha1,hmac-sha1-96,hmac-md5,hmac-ripemd160 

立即重新启动SSHD服务

 systemctl restart sshd 

现在能够访问服务器,可以在/ var / log / secure日志文件中找到成功结果。

cat /var/log/secure| grep -i Accepted
Aug 24 07:18:24 rhellinuxserver sshd[548]: Accepted password for username from 172.21.112.111 port 53776 ssh2

答案 3 :(得分:-1)

最新的腻子客户解决了该问题。