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 ~/.bashrc 或 source ~/.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. 上传并安装
- 导航到 系统 → 软件包
- 点击 上传软件包 标签页
- 选择下载的
.ipk文件并上传
- 点击 安装
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 用户需要在连接设置中调整算法选项:
- 打开 PuTTY
- 左侧导航到 Connection → SSH → Kex
- 在 Algorithm selection policy 中,将
rsa-sha2-256和rsa-sha2-512移到列表顶部
- 保存会话配置
安全建议
- 如果使用方案一或方案二,建议仅在可信网络环境中使用
- 定期更新 OpenWrt 系统到最新版本
- 如果路由器支持,优先使用方案三或方案四从根本解决问题
- 使用强密码或 SSH 密钥认证代替密码登录
- 考虑修改 SSH 默认端口(22)以减少暴力破解风险
- 设置防火墙规则,仅允许信任的 IP 地址访问 SSH
总结
当遇到 "no matching host key type found" 错误时,根据实际情况选择合适的解决方案:
- 快速解决:使用方案一临时允许 ssh-rsa 算法
- 长期使用:配置客户端永久允许,或更新路由器 SSH 服务
- 最佳方案:更新 dropbear 版本(推荐)或替换为 OpenSSH
推荐优先考虑方案三更新 dropbear,既能从根本上解决问题,又不会占用过多存储空间。
- 作者:Orz
- 链接:https://blog.1567890.xyz/technology/openwrt-ssh-key-error-solutions
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

