You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Test Kitchen执行Inspec测试时出现SSH密钥算法错误

Test Kitchen执行Inspec测试时出现SSH密钥算法错误

看起来你碰到了Test Kitchen和RHEL 9这类新系统之间的SSH密钥算法兼容坑,我之前在测试基于RHEL 9的节点时也遇到过几乎一模一样的问题——Converge阶段能正常跑,但到Verify阶段就因为SSH密钥算法不匹配卡壳了。

其实核心原因是RHEL 9默认收紧了SSH安全策略,禁用了较旧的ssh-rsa签名算法,而Test Kitchen依赖的SSH客户端(比如net-ssh)可能还在默认尝试使用这个算法,或者反过来,导致双方协商算法时不匹配。

给你几个靠谱的解决办法,按操作复杂度排序:

  • 修改Test Kitchen配置(最直接)
    打开你的.kitchen.yml,在对应的平台配置下添加SSH传输层的算法指定,比如:

    platforms:
      - name: default-rhel-9
        transport:
          name: ssh
          ssh_options:
            user_known_hosts_file: /dev/null
            host_key_algorithms: ["ssh-rsa", "rsa-sha2-256", "rsa-sha2-512"]
    

    这样强制让Test Kitchen的SSH客户端支持新旧两种算法,就能和RHEL 9的SSH服务端顺利协商了。如果只想临时兼容ssh-rsa,也可以直接把host_key设为ssh-rsa。

  • 修改本地SSH全局配置(一劳永逸)
    如果经常测试RHEL 9这类节点,直接在~/.ssh/config里添加针对测试主机的规则:

    Host default-rhel-9
      HostKeyAlgorithms +ssh-rsa
      PubkeyAcceptedKeyTypes +ssh-rsa
    

    这样以后不管是Test Kitchen还是手动SSH连接,都会自动启用兼容的算法,不用每次改Test Kitchen的配置文件。

  • 升级SSH依赖库(治本)
    有些时候是因为Test Kitchen依赖的net-ssh gem版本太旧,不支持rsa-sha2-256这类新算法。你可以尝试升级这个依赖:

    gem update net-ssh
    

    如果是用Bundler管理依赖,就在项目的Gemfile里指定更高版本的net-ssh(比如>= 6.0),然后执行bundle install更新。

另外,你可以先试试kitchen diagnose --all命令,查看当前的SSH传输配置细节,确认修改后的配置是否生效;也可以手动用SSH连接测试节点(比如ssh default-rhel-9),看看手动连接时会不会出现同样的错误,帮助定位问题。

备注:内容来源于stack exchange,提问作者Daniel Carrington

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 09:14:51