临时解决 Mac SSH 客户端与服务器算法不匹配问题

1. 问题现象

执行 SSH 连接命令时出现如下报错:

bash 复制代码
$ ssh <USERNAME>@<HOST_IP>
Unable to negotiate with <HOST_IP> port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss

2. 问题原因

  • 目标服务器(<HOST_IP>)仅支持 ssh-rsa 和 ssh-dss 这两种较旧的主机密钥签名算法。
  • 客户端(Mac 上的 OpenSSH)出于安全考虑,已默认禁用或降低了这些算法的优先级,导致无法协商成功。

3. 解决方案

3.1 临时解决(单次连接)

在 ssh 命令中临时允许使用 ssh-rsa 算法:

bash 复制代码
ssh -o HostKeyAlgorithms=+ssh-rsa <USERNAME>@<HOST_IP>

如果仍报公钥算法错误,可同时添加公钥算法选项:

bash 复制代码
ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa <USERNAME>@<HOST_IP>

注:旧版 OpenSSH 中 PubkeyAcceptedAlgorithms 可能写作 PubkeyAcceptedKeyTypes,请根据客户端版本调整。

3.2 永久解决(修改配置)

编辑(或创建)用户目录下的 SSH 配置文件 ~/.ssh/config,为指定服务器添加如下配置:

markdown 复制代码
Host <HOST_IP>
    HostKeyAlgorithms +ssh-rsa
    PubkeyAcceptedAlgorithms +ssh-rsa

保存后,直接使用 ssh <USERNAME>@<HOST_IP> 即可自动应用配置。

4. 安全说明

  • ssh-rsa 和 ssh-dss 均基于 SHA-1 哈希算法,存在已知的安全弱点(如碰撞攻击风险)。
  • 长期解决方案建议升级服务器端的 SSH 服务,使其支持更安全的算法(如 rsa-sha2-256、rsa-sha2-512 或 ed25519)。
  • 如果服务器无法升级,以上配置可作为临时或受控环境下的兼容措施。
相关推荐
by————组态几秒前
Ricon组态适用领域全景解析:工业制造、能源、市政民生与智慧城市四大场景落地实践
后端·物联网·数学建模·智慧城市·能源·制造·组态
花卷持续成长2 分钟前
什么是代理Bean?
后端
柠檬味拥抱5 分钟前
RDD2022道路损伤检测数据集 | 3600张YOLO智慧交通数据集
后端
asong9 分钟前
没有源代码,AI 也能拆解软件:这个开源项目已有 3.7 万 Star
javascript·后端·github
知守观12 分钟前
18年老兵的十条开发军规:每条背后都是一个翻车现场
java·后端·程序员
韩振方12 分钟前
为什么 curl -I 显示 200,页面打开还是报错?
后端
小稀土12313 分钟前
9 类行业怎么用私有化部署研发管理工具:涉密、制造、金融、科研院所一次盘全
后端
懒洋洋不想起床13 分钟前
DEX 与未来交易市场:为什么去中心化金融正在进入新阶段
后端