Lazy loaded image
OpenWrt SSH 连接错误解决方案:no matching host key type found
字数 1972阅读时长 5 分钟
2025-11-29
2025-12-1
type
status
date
slug
summary
tags
category
icon
password
菜单级别
Place
Verification
Owner

问题描述

在连接某些版本的 OpenWrt 路由器时,由于系统内置的 dropbear SSH 服务版本较旧,使用新版本的 SSH 客户端连接时会出现以下错误:
这是因为新版本的 OpenSSH 客户端(8.8 及以上版本)出于安全考虑,默认禁用了 ssh-rsa 签名算法,而旧版本的 dropbear 只支持 ssh-rsa 算法,导致无法协商出双方都支持的加密算法。

解决方案概述

根据不同使用场景,提供四种解决方案:
方案一:客户端临时允许 ssh-rsa 算法
  • 快速便捷,无需修改路由器配置
  • 适合临时连接或紧急情况
方案二:客户端永久配置
  • 一次配置,长期有效
  • 适合经常需要连接该设备的用户
方案三:更新 dropbear 版本
  • 直接更新 dropbear 到支持现代算法的新版本
  • 保持系统轻量级,占用空间小
方案四:替换为 OpenSSH 服务
  • 功能更强大,安全性更高
  • 需要较多存储空间

方案一:客户端临时允许 ssh-rsa 算法 ⭐

每次连接时在命令行中添加参数,临时启用 ssh-rsa 算法。

Windows / macOS / Linux

在终端中执行以下命令:
参数说明:
  • -o HostKeyAlgorithms=+ssh-rsa:临时允许 ssh-rsa 主机密钥算法
  • -o PubkeyAcceptedKeyTypes=+ssh-rsa:临时允许 ssh-rsa 公钥类型
  • 192.168.1.1:替换为您的路由器 IP 地址

使用别名简化命令(可选)

如果觉得命令太长,可以在终端配置文件中创建别名。
Linux / macOS(Bash/Zsh):
编辑 ~/.bashrc~/.zshrc 文件,添加:
保存后执行 source ~/.bashrcsource ~/.zshrc,之后可以使用:

方案二:客户端永久配置

通过修改 SSH 客户端配置文件,为特定主机永久启用 ssh-rsa 算法。

1. 编辑 SSH 配置文件

Linux / macOS:
或使用 vi 编辑器:
Windows(OpenSSH):
编辑 C:\Users\您的用户名\.ssh\config 文件(如果不存在则创建)。

2. 添加配置

在配置文件中添加以下内容:
配置说明:
  • Host openwrt:连接别名,可自定义
  • HostName 192.168.1.1:路由器 IP 地址
  • User root:登录用户名
  • HostKeyAlgorithms +ssh-rsa:允许 ssh-rsa 主机密钥算法
  • PubkeyAcceptedKeyTypes +ssh-rsa:允许 ssh-rsa 公钥类型

3. 使用配置

保存配置文件后,可以直接使用别名连接:

配置多个设备

如果有多台 OpenWrt 路由器,可以添加多个配置段:

通配符配置

如果要对所有 OpenWrt 设备启用 ssh-rsa,可以使用通配符:

方案三:更新 dropbear 版本

直接更新 dropbear 到支持现代加密算法的新版本,保持系统轻量级的同时解决兼容性问题。
优势: 相比安装 OpenSSH,更新 dropbear 占用的存储空间更小(通常小于 100 KB),更适合存储空间有限的路由器设备。

操作步骤

1. 下载安装包

注意: 上述链接为 aarch64_cortex-a53 架构版本,其他架构请参考文末的架构对应表。

2. 登录 OpenWrt 管理界面

在浏览器中访问 http://192.168.1.1

3. 上传并安装

  1. 导航到 系统 → 软件包
  1. 点击 上传软件包 标签页
  1. 选择下载的 .ipk 文件并上传
  1. 点击 安装

4. 重启路由器

安装完成后,通过 Web 界面重启路由器。

5. 验证连接

使用正常的 SSH 命令连接,不再需要添加额外参数:

常见架构对应

架构
适用设备
aarch64_cortex-a53
ARM 64位(新款软路由、树莓派 3/4)
mipsel_24kc
MIPS(MT7621、MT7628 芯片)
arm_cortex-a7
ARM 32位(MT7620 芯片)
x86_64
x86 软路由、PC
如不确定设备架构,SSH 执行:opkg print-architecture

方案四:替换为 OpenSSH 服务

将 dropbear 替换为功能更强大的 OpenSSH 服务器,支持现代加密算法和更多高级特性。
注意: 此方案需要路由器有足够的存储空间(通常需要 1-2 MB 可用空间),操作前请确认。

1. 连接到 OpenWrt

使用方案一或方案二的方法先连接到路由器:

2. 更新软件包列表

3. 安装 OpenSSH 服务器

4. 切换 SSH 服务

停止并禁用 dropbear:
启用并启动 OpenSSH:

5. 验证连接

退出当前 SSH 连接,然后使用正常的 SSH 命令重新连接:
如果能够正常连接,说明升级成功。

回退到 dropbear(如遇问题)

如果升级后遇到问题,可以通过 Web 界面或串口连接路由器,执行以下命令回退:

常见问题

为什么会出现这个错误?

安全性考虑: OpenSSH 8.8 版本(2021年9月发布)及之后的版本默认禁用了 ssh-rsa 签名算法,因为它基于 SHA-1 哈希算法,已被证明存在安全隐患。
兼容性问题: 旧版本的 dropbear 只支持 ssh-rsa 算法,与新版本的 SSH 客户端不兼容。

哪种方案最适合我?

  • 临时连接或紧急情况:使用方案一(临时允许)
  • 经常连接该设备:使用方案二(永久配置)
  • 长期使用且注重安全:使用方案三(更新 dropbear)或方案四(OpenSSH)
  • 存储空间有限:优先选择方案三(更新 dropbear)
  • 需要高级功能:选择方案四(OpenSSH)

使用 ssh-rsa 算法安全吗?

在局域网环境中连接自己的路由器,安全风险较低。但如果是公网连接或对安全要求较高的场景,建议使用方案三或方案四从根本上解决问题。

Windows 用户如何操作?

使用 PowerShell 或 CMD:
Windows 10/11 自带 OpenSSH 客户端,可以直接在 PowerShell 或 CMD 中使用方案一或方案二的命令。
使用 PuTTY:
PuTTY 用户需要在连接设置中调整算法选项:
  1. 打开 PuTTY
  1. 左侧导航到 Connection → SSH → Kex
  1. Algorithm selection policy 中,将 rsa-sha2-256rsa-sha2-512 移到列表顶部
  1. 保存会话配置

安全建议

  • 如果使用方案一或方案二,建议仅在可信网络环境中使用
  • 定期更新 OpenWrt 系统到最新版本
  • 如果路由器支持,优先使用方案三或方案四从根本解决问题
  • 使用强密码或 SSH 密钥认证代替密码登录
  • 考虑修改 SSH 默认端口(22)以减少暴力破解风险
  • 设置防火墙规则,仅允许信任的 IP 地址访问 SSH

总结

当遇到 "no matching host key type found" 错误时,根据实际情况选择合适的解决方案:
  • 快速解决:使用方案一临时允许 ssh-rsa 算法
  • 长期使用:配置客户端永久允许,或更新路由器 SSH 服务
  • 最佳方案:更新 dropbear 版本(推荐)或替换为 OpenSSH
推荐优先考虑方案三更新 dropbear,既能从根本上解决问题,又不会占用过多存储空间。
上一篇
Python 字符串格式化完全指南
下一篇
OpenWrt 安装 frpc 客户端教程