临时解决 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-rsassh-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-rsassh-dss 均基于 SHA-1 哈希算法,存在已知的安全弱点(如碰撞攻击风险)。
  • 长期解决方案建议升级服务器端的 SSH 服务,使其支持更安全的算法(如 rsa-sha2-256rsa-sha2-512ed25519)。
  • 如果服务器无法升级,以上配置可作为临时或受控环境下的兼容措施。
相关推荐
Scene2166 分钟前
Agent Harness、Loop 与 Graph:构建生产级 AI Agent 的三大架构支柱
后端
SomeB1oody30 分钟前
【RustyML入门】2.0. 经典机器学习
开发语言·后端·机器学习·rust·教程
就改了35 分钟前
SpringBoot 自定义线程池 + 实时监控指标
java·spring boot·后端
暗黑小白42 分钟前
脱敏引擎工程化
后端·ai agent
用户8181870627461 小时前
第23章 JPA / Hibernate 异常
后端
用户8181870627461 小时前
第22章 MyBatis / MyBatis-Plus 常见异常与 SQL 调试
后端
雪隐1 小时前
个人电脑玩AI-15让5060 Ti给你打工——MiniMax H3 本地部署实录:一个自带录音棚的视频模型,和它的 NVFP4 瘦身奇遇
前端·人工智能·后端
玖石书2 小时前
ASP.NET Core 迁移至 Spring系列:类库框架篇
java·后端·asp.net
PieroPC3 小时前
Windows 驱动备份与恢复工具 CMD bat
后端
Csvn3 小时前
📊 SQL 入门 Day 12: 窗口函数基础
后端·sql