这两报错是连环的,根因在 S6520X-26C-SI(Comware V7,SI 档算法支持偏老)的 SSH server 只扔了 ssh-rsa(RSA-SHA1) + ssh-dss(你打的 ssh-dad 就是 ssh-dss 笔误),而你的客户端 OpenSSH 版本偏高(8.8+ 默认砍 ssh-rsa,9.x 连 SHA1 的 libcrypto digest 都进一步收紧),所以走出了下面这个死循环:
客户端连 → 协商:服务端只给 ssh-rsa/ssh-dss → 客户端拒(no match host key)
你加 -legacy / +ssh-rsa 强开 → 走到密钥验证阶段 → libcrypto 发现 SHA1 摘要被禁 → invalid digest
ssh-dss在 OpenSSH 9.x 更是彻底移除,legacy 也救不回来,所以你那句 -legacy顶多让 ssh-rsa 过协商,但 digest 层还是挂。
🔍 先在设备上确认一下现状
display version # 看 Comware 版本(SI 档多半 R27 之前,SSH 算法弱)
display ssh2 algorithm # 看 server 当前扔哪些 host-key / kex / cipher
display public-key local # 看本地存的 host-key 类型和长度
如果 display ssh2 algorithm里 host-key 一行只有 ssh-rsa,ssh-dss,就坐实了上面的判断。
🛠 根治:设备侧把算法提上来(推荐)
S6520X-SI 虽然是入门款,但 Comware V7 R27xx+ 的 SSH 是支持 rsa-sha2-256/rsa-sha2-512和 ecdsa的,关键是老设备出厂 RSA 密钥是 SHA1 签的,即使算法列表写了 rsa-sha2 也没用,得重生成密钥。
步骤 1:重生成 host-key(核心)
system-view
# 先把老的 DSA 干掉(ssh-dss 在 OpenSSH 9.x 已死,留着还干扰协商)
undo public-key local create dsa
# RSA 重生成,2048 或 4096(SI 档 2048 够用,新 V7 会自动用 SHA256 签)
public-key local create rsa 2048
# 顺手再起一个 ecdsa(OpenSSH 全版本都认,最稳)
public-key local create ecdsa nistp256
步骤 2:显式把 host-key 算法列表拉全
ssh2 algorithm host-key rsa-sha2-256 rsa-sha2-512 ssh-rsa ecdsa
💡 顺序有讲究:把 rsa-sha2-256放最前,客户端优先走 SHA2;ssh-rsa放后面兜底(给老客户端);ecdsa也加上,双保险。
步骤 3:顺手把 kex / cipher 也提一下(避免下一步又卡)
ssh2 algorithm key-exchange ecdh-sha2-nistp256 ecdh-sha2-nistp384 dh-group14-sha1
ssh2 algorithm cipher aes256-gcm aes128-gcm aes256-ctr aes128-ctr
ssh2 algorithm mac hmac-sha2-256 hmac-sha2-512
步骤 4:确认 SSH server 跑的是 V2
ssh server enable
# 如果之前配过 ssh1 兼容,建议关掉
undo ssh server compatible-ssh1x enable
然后 display ssh2 algorithm再看一眼,host-key 行里出现 rsa-sha2-256,rsa-sha2-512,ssh-rsa,ecdsa就对了,客户端不用 -legacy也能直连。
🪛 如果设备版本太老(R25xx 之前 SI),不支持 rsa-sha2
S6520X-26C-SI 如果 Comware 还停在 R25/R26 早期,ssh2 algorithm host-key命令可能根本不接受 rsa-sha2-*,那设备侧无解,只能客户端侧兜底:
Linux / macOS 客户端 ~/.ssh/config
Host 192.168.x.x
HostKeyAlgorithms +ssh-rsa,ssh-dss
PubkeyAcceptedAlgorithms +ssh-rsa
然后 ssh admin@x.x.x.x直连,不用 -legacy。
Windows OpenSSH 特别注意
Win10/11 自带 OpenSSH 8.1–9.x 不支持 +追加语法,必须写完整列表否则直接语法错:
Host *
HostKeyAlgorithms ssh-rsa,ssh-dss,rsa-sha2-256,rsa-sha2-512,ecdsa-sha2-nistp256
PubkeyAcceptedKeyTypes ssh-rsa,rsa-sha2-256,rsa-sha2-512
文件在 %USERPROFILE%\.ssh\config,没有就建一个。
⚠️ ssh-dss在 OpenSSH 9.x 客户端已经编编译期移除,Windows 如果跑的是 9.x(Win11 23H2+ 个别版本),ssh-dss写进去也救不回来——所以设备侧务必 undo public-key local create dsa把 DSA 摘掉,免得服务端还把 ssh-dss 扔出来干扰协商。
✅ 给你的推荐顺序
设备上 display version先看 Comware 号——S6520X-26C-SI 如果能升到 R2719+(你前面问 S6890 是 R2719P01,同代 S6520X 也有 R2719Pxx),升完 SSH 算法原生支持 rsa-sha2,是最干净的
升不了就按上面"步骤 1-4"重生成 rsa 2048 + ecdsa,显式配 ssh2 algorithm host-key——90% 情况这就好了,客户端不用任何参数
设备实在太老命令不支持,就客户端 ~/.ssh/config兜底,但记得设备侧把 DSA 关掉
暂无评论
一、报错完整原因拆解
1. 第一报错 no match host key found their offer ssh-rsa
新版 OpenSSH(8.8 及以上)默认彻底废弃ssh-rsa签名算法(SHA1 哈希),S6520X 老固件仅生成 ssh-rsa 主机密钥,客户端不协商直接拒绝连接。
2. 追加-o HostKeyAlgorithms=+ssh-rsa后报 error in libcrypto invalid digest
只放开主机密钥类型不够,交换机 SSH 服务仅支持 SHA1 类弱 KEX/hmac 算法,新版 OpenSSL 禁用 SHA1 摘要校验,协商时摘要不匹配直接抛出 libcrypto 摘要错误;单纯加 legacy 参数无法补齐全套兼容算法。
核心本质
S6520X-26C-SI 旧固件 SSH 仅提供老旧 SHA1 套件:
主机密钥:ssh-rsa(SHA1 签名)
密钥交换:diffie-hellman-group14-sha1 /group-exchange-sha1
校验 MAC:hmac-sha1
现代 OpenSSH/OpenSSL 默认移除所有 SHA1 相关算法,双向算法集无交集导致连接失败。
方案一:交换机侧永久根治(推荐,一劳永逸,不用客户端加复杂参数)
步骤 1:生成现代 RSA-sha2 主机密钥(交换机默认只有 ssh-rsa,缺少 sha2 签名密钥)
plaintext
system-view
# 删除旧ssh-rsa主机密钥
undo public-key local create rsa
# 生成2048位RSA密钥,支持rsa-sha2-256/512现代签名(解决invalid digest)
public-key local create rsa modulus 2048
步骤 2:SSH 服务启用全套现代强算法(兼容新版客户端)
plaintext
# 1. 密钥交换KEX:启用椭圆曲线sha2算法,淘汰sha1 DH
ssh server kex-algorithm ecdh-sha2-nistp256 ecdh-sha2-nistp384 diffie-hellman-group14-sha256
# 2. 加密套件:仅启用CTR/GCM强加密,移除CBC弱加密
ssh server encryption-algorithm aes-128-ctr aes-256-ctr aes-128-gcm aes-256-gcm
# 3. MAC校验:强制sha2哈希,彻底解决invalid digest摘要报错
ssh server hmac-algorithm hmac-sha2-256 hmac-sha2-512
# 4. 开启SSH服务,关闭老旧ssh-dss弱密钥
ssh server enable
undo public-key local create dsa
步骤 3:保存配置,重启 SSH 服务生效
plaintext
save
# 重启SSH服务,断开现有连接
undo ssh server enable
ssh server enable
校验配置
plaintext
display ssh server algs
输出能看到rsa-sha2-256、ecdh-sha2-nistp256、hmac-sha2-256即为配置成功,客户端无需任何 legacy 参数可直接登录。
补充:固件升级兜底
若配置后仍报错,说明设备固件版本过低,底层不支持 sha2 算法:
官网下载 S6520X-26C-SI 最新 Comware V7 固件升级,新版原生支持现代 SSH 算法套件。
方案二:客户端临时兼容方案(应急登录,不推荐长期使用)
必须一次性补齐主机密钥、KEX 交换、加密、MAC 哈希四类兼容参数,只加 HostKeyAlgorithms 会报 libcrypto 摘要错误:
Linux/macOS 完整登录命令(复制直接用)
bash
运行
ssh -o HostKeyAlgorithms=+ssh-rsa \
-o PubkeyAcceptedAlgorithms=+ssh-rsa \
-o KexAlgorithms=+diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1 \
-o MACs=+hmac-sha1 \
-o Ciphers=+aes128-cbc,aes256-cbc \
admin@交换机IP
Windows PowerShell 同参数写法
powershell
ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa -o KexAlgorithms=+diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1 -o MACs=+hmac-sha1 -o Ciphers=+aes128-cbc,aes256-cbc admin@交换机IP
永久客户端兼容(本机所有 SSH 连接生效)
编辑~/.ssh/config,填入交换机 IP 段:
plaintext
Host 192.168.*
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
KexAlgorithms +diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1
MACs +hmac-sha1
Ciphers +aes128-cbc,aes256-cbc
三、常见踩坑补充
只配置 HostKeyAlgorithms=+ssh-rsa 必报 invalid digest
客户端仅放开主机密钥,但 KEX/MAC 仍使用 sha2 算法,交换机不支持,摘要校验失败,必须全套补齐兼容参数。
生成 RSA 密钥后仍提示 ssh-rsa
ssh-rsa 是密钥类型,rsa-sha2-256是签名算法;生成 2048 位 RSA 密钥后客户端会自动协商 sha2 签名,不再触发 SHA1 摘要报错。
安全合规提示
客户端兼容方案启用大量 SHA1 弱算法,等保 / 安全扫描会判定高危漏洞;优先采用交换机侧配置现代 SSH 算法方案,兼顾兼容性与安全。
验证客户端支持算法
bash
运行
# 查看支持的主机密钥算法
ssh -Q HostKeyAlgorithms
# 查看支持的MAC哈希
ssh -Q MACs
# 查看支持的密钥交换
ssh -Q KexAlgorithms
暂无评论
这个问题是由于你的SSH客户端(比如Linux或macOS上的OpenSSH)版本较新,而S6520X-26C-SI交换机支持的加密算法较旧,两者在协商时无法达成一致导致的。
你的交换机 (S6520X-26C-SI):作为SSH服务端,它只提供了 ssh-rsa 和 ssh-dss 这两种老旧的主机密钥算法。你提到的 ssh-dad 应该是 ssh-dss 的笔误。
你的SSH客户端 (OpenSSH):为了安全,从OpenSSH 8.8版本开始,默认禁用了不安全的 ssh-rsa 算法。在OpenSSH 9.x版本中,对相关算法的支持则更为严格。
所以,当你尝试连接时:
你尝试使用 --legacy 参数,虽然让客户端勉强接受了 ssh-rsa,但在后续的密钥验证阶段,又因为客户端禁用了SHA1摘要算法,而触发了 error in libcrypto invalid digest 的错误。
你可以从客户端临时兼容,或从设备侧永久修复。推荐在交换机上进行配置,以彻底解决问题。
如果急需连接,可以在SSH命令中临时指定允许使用 ssh-rsa 算法。
如果需要长期使用,可以修改客户端的SSH配置文件 ~/.ssh/config:
注意:这只是临时方案,会降低连接安全性。
这是根本解决方法,通过在交换机上升级和配置加密算法,兼顾安全与兼容。
登录交换机:通过Console口或其他方式登录到交换机命令行界面。
进入系统视图:
重新生成RSA主机密钥:这是关键一步,新的Comware V7系统会自动使用更安全的SHA256签名。
(可选)生成ECDSA密钥:ecdsa 算法被所有新版本OpenSSH客户端支持,非常稳定。
指定主机密钥算法列表:明确告知客户端交换机支持的算法,并将更安全的算法放在前面。
(可选)优化密钥交换和加密算法:避免后续出现其他算法不兼容的问题。
确认配置并保存:
完成交换机侧的配置后,再用你的SSH客户端尝试连接,问题应该就能解决了。
暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论