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

Ansible通过ansible-pylibssh无法连接旧加密算法的远程设备

解决Ansible连接Cisco旧设备的SSH加密算法不匹配问题

1. 核心问题:ansible-pylibssh不读取系统SSH配置

ansible-pylibssh 作为独立的SSH库,默认不会加载系统的 ~/.ssh/config,所以你在该文件中添加的加密算法配置对Ansible无效,必须直接在Ansible层面指定参数。

两种配置方式:

  • 全局配置(所有Playbook生效)
    编辑 ~/.ansible.cfg(用户级)或 /etc/ansible/ansible.cfg(系统级),添加以下内容:

    [ssh_connection]
    ssh_args = -o PubkeyAcceptedAlgorithms=+ssh-rsa -o HostkeyAlgorithms=+ssh-rsa -o KexAlgorithms=+diffie-hellman-group1-sha1,diffie-hellman-group-exchange-sha1
    

    注意:将KexAlgorithms的值替换为你手动SSH连接时验证有效的算法(匹配之前的KEX错误提示)。

  • Playbook级配置(仅当前Playbook生效)
    在目标主机的Playbook中添加SSH参数变量:

    - name: 连接Cisco设备
      hosts: cisco_devices
      vars:
        ansible_ssh_common_args: "-o PubkeyAcceptedAlgorithms=+ssh-rsa -o HostkeyAlgorithms=+ssh-rsa -o KexAlgorithms=+diffie-hellman-group1-sha1"
      tasks:
        # 此处添加你的任务
    

2. 解决主机密钥算法不匹配问题

针对更新后出现的「服务器仅支持ssh-rsa,客户端仅提供rsa-sha2-256」错误:

  • 必须确保配置中明确添加ssh-rsa到HostkeyAlgorithms和PubkeyAcceptedAlgorithms,使用+符号表示在原有算法列表基础上追加,而非覆盖全部算法。
  • 无论使用密钥认证还是密码认证,HostkeyAlgorithms的配置都是必须的(用于验证目标主机身份)。

3. 验证配置有效性

通过调试模式运行Ansible ping模块,检查SSH参数是否正确加载:

ansible cisco_devices -m ping -vvv

在输出中查找SSH command line相关日志,确认你指定的加密算法已被包含。

4. 确保ansible-pylibssh版本正常

旧版本的ansible-pylibssh可能存在配置解析bug,建议升级到最新稳定版:

pip install --upgrade ansible-pylibssh

内容的提问来源于stack exchange,提问作者notomera

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 12:34:55