首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Ubuntu 22.04 出现 “no matching host key type” 的排查与解决

Ubuntu 22.04 出现 “no matching host key type” 的排查与解决

原创
作者头像
高老师
发布2025-09-13 22:24:53
发布2025-09-13 22:24:53
6700
代码可运行
举报
运行总次数:0
代码可运行

一、现象

在新安装的 Ubuntu 22.04 客户端上,通过 SSH 连接一台旧服务器时,命令立即失败,并提示:

代码语言:javascript
代码运行次数:0
运行
复制
Unable to negotiate with xxx port 22: no matching host key type found.
Their offer: ssh-rsa,ssh-dss

同网络下的 Ubuntu 20.04 及 CentOS 7 客户端可正常登录。


二、原因

  1. Ubuntu 22.04 自带 OpenSSH 8.9,默认禁用 ssh-rsa 与 ssh-dss 算法。
  2. 旧服务器仅提供这两种算法,导致密钥协商阶段无匹配项,连接被服务端主动断开。

三、临时解决(客户端侧)

在用户目录下的 ~/.ssh/config 中增加兼容算法:

代码语言:javascript
代码运行次数:0
运行
复制
Host 192.168.x.x
    HostKeyAlgorithms +ssh-rsa
    PubkeyAcceptedAlgorithms +ssh-rsa

若旧服务器只给出 ssh-dss,可把 ssh-rsa 换成 ssh-dss;保存后重新连接即可登录。


四、长期方案(推荐在服务端完成)

  1. 升级旧服务器 OpenSSH 至 7.4+
    • CentOS 6/7 可通过官方软件源或 IUS 源更新
    • 升级后默认自带 rsa-sha2-256/512,新客户端无需改动
  2. 或新增 stronger 主机密钥 bash复制# 生成 ed25519 ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N "" # 在 sshd_config 追加 echo "HostKey /etc/ssh/ssh_host_ed25519_key" >> /etc/ssh/sshd_config systemctl restart sshd 重启服务后,Ubuntu 22.04 可直接使用 ed25519 完成协商。

五、验证

  • 查看客户端支持算法 ssh -Q key
  • 查看协商详情 ssh -vvv user@host

若输出出现 host key algorithm: ssh-rsaed25519 且能进入 shell,即表示匹配成功。


六、小结

步骤

动作

1

确认报错仅发生在高版本客户端

2

临时在 ~/.ssh/config 增加旧算法

3

长期应在服务端升级或添加新密钥

4

使用 ssh -vvv 验证协商过程

完成以上调整后,新旧系统之间的密钥协商即可恢复正常,SSH 连接不再因算法不匹配而

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、现象
  • 二、原因
  • 三、临时解决(客户端侧)
  • 四、长期方案(推荐在服务端完成)
  • 五、验证
  • 六、小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档