人工合成黄金是否可行

保存时间:2026/3/29 16:02:44


解决 SSH 连接中密钥类型不匹配问题
内容由豆包 AI 生成
$ ssh 192.168.1.2 Unable to negotiate with 192.168.1.2 port 22: no matching host key type found. Their offer: ssh-rsa,spki-sign-rsa
你遇到的这个问题是因为你的本地 SSH 客户端版本较新,默认不再支持服务器提供的 ssh-rsaspki-sign-rsa 这类旧的主机密钥类型,导致双方无法协商出兼容的加密方式。

解决方案

你有两种方式可以解决这个问题,推荐优先使用临时方案测试,确认可行后再考虑永久配置。

方案 1:临时连接(单次生效)

直接在 SSH 命令中指定允许使用 ssh-rsa 密钥类型:
bash
运行
ssh -o HostKeyAlgorithms=+ssh-rsa 192.168.1.2
如果需要指定用户名(比如用户名是 root),可以这样写:
bash
运行
ssh -o HostKeyAlgorithms=+ssh-rsa root@192.168.1.2

方案 2:永久配置(长期生效)

修改 SSH 的配置文件,让客户端默认兼容旧的密钥类型,避免每次都加参数:
  1. 编辑 SSH 客户端配置文件(如果文件不存在则新建):
    bash
    运行
    vi ~/.ssh/config
    
  2. 添加以下内容(可以针对单个服务器或所有服务器配置):
    config
    # 仅对192.168.1.2生效(推荐)
    Host 192.168.1.2
        HostKeyAlgorithms +ssh-rsa
        PubkeyAcceptedKeyTypes +ssh-rsa
    
    # 对所有服务器生效(不推荐,仅临时测试用)
    # Host *
    #     HostKeyAlgorithms +ssh-rsa
    #     PubkeyAcceptedKeyTypes +ssh-rsa
    
  3. 保存退出(vi 编辑器中按 ESC 后输入 :wq)。
  4. 赋予配置文件正确的权限(避免 SSH 报错):
    bash
    运行
    chmod 600 ~/.ssh/config
    
  5. 之后直接执行 ssh 192.168.1.2 即可正常连接。

关键参数解释

  • HostKeyAlgorithms=+ssh-rsa:表示在客户端支持的密钥类型列表中追加 ssh-rsa 类型(+ 号避免覆盖其他默认支持的类型)。
  • PubkeyAcceptedKeyTypes +ssh-rsa:额外配置公钥认证的密钥类型,防止后续登录时出现类似的公钥不兼容问题。
  • 配置文件权限 600:SSH 对配置文件的权限要求严格,必须确保只有当前用户可读写,否则会被拒绝使用。

总结

  1. 核心问题:新版 SSH 客户端默认禁用了旧的 ssh-rsa 密钥类型,与服务器不兼容。
  2. 临时解决:连接时添加 -o HostKeyAlgorithms=+ssh-rsa 参数。
  3. 永久解决:修改 ~/.ssh/config 文件,为目标服务器添加兼容配置,并确保文件权限为 600
如何查看当前系统支持的密钥类型?
如何在服务器端配置支持的密钥类型?
如何解决SSH连接时的其他常见问题?