文章目录

  • 问题现象
  • 排查
    • 为什么没有使用ssh进行连接呢?
  • 安装ansible-pylibssh模块
  • 参考

问题现象

inventory如下

[test_dev]
172.16.100.254 ansible_ssh_user=cisco ansible_ssh_password='cisco'  ansible_ssh_port=22 ansible_connection=ansible.netcommon.network_cli ansible_network_os=ios 

ping的时候显示是正常的。

# ansible test_dev -m ping
172.16.100.254 | SUCCESS => {"changed": false,"ping": "pong"
}

但是调用cisco_commands模块时就报错了

# ansible -vvv test_dev -m ios_command -a "commands='show version '"
The full traceback is:File "/data/apps/opt/ansible6/lib/python3.9/site-packages/ansible_collections/cisco/ios/plugins/module_utils/network/ios/ios.py", line 61, in get_capabilitiescapabilities = Connection(module._socket_path).get_capabilities()File "/data/apps/opt/ansible6/lib/python3.9/site-packages/ansible/module_utils/connection.py", line 200, in __rpc__raise ConnectionError(to_text(msg, errors='surrogate_then_replace'), code=code)
172.16.100.254 | FAILED! => {"changed": false,"invocation": {"module_args": {"commands": ["show version "],"interval": 1,"match": "all","retries": 10,"wait_for": null}},"msg": "Failed to authenticate: Authentication failed."
}

为什么会是这种情况呢,ping的时候不是已经成功了吗?

排查

根据官方文档中的说明,设置相关变量,开启DEBUG,并记录日志:

export ANSIBLE_LOG_PATH=~/ansible.log
export ANSIBLE_DEBUG=True

查看日志,可以看到是paramiko模块在连接设备时,出错了。

2023-02-24 19:48:03,816 p=32048 u=root n=ansible | <172.16.100.254> ANSIBLE_NETWORK_IMPORT_MODULES: running ios_command
2023-02-24 19:48:03,817 p=32058 u=root n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use
ansible.utils.display.Display.verbosity instead. This feature will be removed
in version 2.18. Deprecation warnings can be disabled by setting
deprecation_warnings=False in ansible.cfg.
2023-02-24 19:48:03,818 p=32058 u=root n=ansible | <172.16.100.254> ESTABLISH PARAMIKO SSH CONNECTION FOR USER: cisco on PORT 22 TO 172.16.100.254
2023-02-24 19:48:03,826 p=32058 u=root n=p=32058 u=root | paramiko [172.16.100.254] | Connected (version 2.0, client Cisco-1.25)
2023-02-24 19:48:06,408 p=32058 u=root n=p=32058 u=root | paramiko [172.16.100.254] | Authentication (publickey) failed.
2023-02-24 19:48:06,411 p=32058 u=root n=p=32058 u=root | paramiko [172.16.100.254] | Disconnect (code 2): Protocol error: expected packet type 50, got 5
2023-02-24 19:48:06,419 p=32058 u=root n=ansible | Traceback (most recent call last):File "/data/apps/opt/ansible6/lib/python3.9/site-packages/ansible/plugins/connection/paramiko_ssh.py", line 428, in _connect_uncachedssh.connect(File "/data/apps/opt/ansible6/lib/python3.9/site-packages/paramiko/client.py", line 450, in connectself._auth(File "/data/apps/opt/ansible6/lib/python3.9/site-packages/paramiko/client.py", line 781, in _authraise saved_exceptionFile "/data/apps/opt/ansible6/lib/python3.9/site-packages/paramiko/client.py", line 768, in _authself._transport.auth_password(username, password)File "/data/apps/opt/ansible6/lib/python3.9/site-packages/paramiko/transport.py", line 1564, in auth_passwordreturn self.auth_handler.wait_for_response(my_event)File "/data/apps/opt/ansible6/lib/python3.9/site-packages/paramiko/auth_handler.py", line 245, in wait_for_responseraise e
paramiko.ssh_exception.AuthenticationException: Authentication failed.

为什么没有使用ssh进行连接呢?

再往上看,又看到

2023-02-24 19:48:03,776 p=32048 u=root n=ansible | network_os is set to ios
2023-02-24 19:48:03,776 p=32048 u=root n=ansible | <172.16.100.254> ssh type is set to auto
2023-02-24 19:48:03,777 p=32048 u=root n=ansible | <172.16.100.254> autodetecting ssh_type
2023-02-24 19:48:03,777 p=32048 u=root n=ansible | [WARNING]: ansible-pylibssh not installed, falling back to paramiko2023-02-24 19:48:03,777 p=32048 u=root n=ansible | <172.16.100.254> ssh type is now set to paramiko
2023-02-24 19:48:03,777 p=32048 u=root n=ansible | <172.16.100.254>  32054 1677239283.52887: trying /data/apps/opt/ansible6/lib/python3.9/site-packages/ansible/plugins/connection/__pycache__32054 1677239283.52905: trying /data/apps/opt/ansible6/lib/python3.9/site-packages/ansible/plugins/connection
  • ssh的模式设置的是auto
  • 因为没有找到ansible-pylibssh的库,所以改用了paramiko的库
  • 然后paramiko使用密钥验证就报错了(这里没有配置相关密钥)

那这样就好办了,直接安装相关的库就可以了。

安装ansible-pylibssh模块

[root@wanghaifeng-test payease-haifeng-dev-ansible]# pip install  ansible-pylibssh
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting ansible-pylibsshDownloading https://pypi.tuna.tsinghua.edu.cn/packages/a8/27/c1eb3367cf63059a016b45dd987a6a88922a643b94b2ab28f0d0d89ea774/ansible_pylibssh-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.5/2.5 MB 989.3 kB/s eta 0:00:00
Installing collected packages: ansible-pylibssh
Successfully installed ansible-pylibssh-1.1.0
WARNING: You are using pip version 22.0.4; however, version 23.0.1 is available.
You should consider upgrading via the '/data/apps/opt/ansible6/bin/python -m pip install --upgrade pip' command.

安装之后,问题就解决了,命令也可以正常运行了。

安装后相关的日志

2023-02-24 19:52:59,458 p=32110 u=root n=ansible | <172.16.100.254> ssh type is set to auto
2023-02-24 19:52:59,458 p=32110 u=root n=ansible | <172.16.100.254> autodetecting ssh_type
2023-02-24 19:52:59,458 p=32110 u=root n=ansible | <172.16.100.254> ssh type is now set to libssh

参考

  • https://docs.ansible.com/ansible/latest/network/user_guide/network_debug_troubleshooting.html : Network Debug and Troubleshooting Guide

ansible连接cisco设备报错问题相关推荐

  1. mysql8.0client_navicat 连接mysql8.0 报错client does not support authentication

    navicat 连接mysql8.0 报错client does not support authentication,解决方法: 打开windows Powershell,输入以下命令 ,加红加粗的 ...

  2. jmeter连接MySQL出错_MySQL数据库之jmeter连接mysql数据库报错Cannot create PoolableConnectionFactory...

    本文主要向大家介绍了MySQL数据库之jmeter连接mysql数据库报错Cannot create PoolableConnectionFactory  ,通过具体的内容向大家展现,希望对大家学习M ...

  3. mysql报错乱码_连接mysql服务器报错时,出现乱码

    页头用了 header('content-type:text/html;charset=utf-8'); try { $this->dbo=new PDO($dsn,$dbuser,$dbpas ...

  4. 连接mysql报错有乱码_连接mysql服务器报错时,出现乱码

    页头用了 header('content-type:text/html;charset=utf-8'); try { $this->dbo=new PDO($dsn,$dbuser,$dbpas ...

  5. pycharm远程连接服务器(docker)调试+ssh连接多次报错

    一,登入服务器建docker nvidia-docker run -it -v ~/workspace/:/workspace -w /workspace/  --name=fzh_tf  --shm ...

  6. sqlyog for MySQL远程连接的时候报错mysql 1130的解决方法

    通过Navicat for MySQL远程连接的时候报错mysql 1130的解决方法 今天在用远程连接Mysql服务器的数据库,不管怎么弄都是连接不到. 错误代码是1130,ERROR 1130: ...

  7. IDEA 2020.3 连接mysql数据库报错解决

    IDEA 2020.3 连接mysql数据库报错解决 问题: Cannot connect to "Connection". The server time zone value ...

  8. 【MySQL】MySQL 8 IDEA连接本地MySQL报错 Host DESKTOP-MISSMJIJ is not allowed to connect to this serv

    1.背景 在window10 下开发,MySQL 8 IDEA连接本地MySQL报错 MySQL 8 Host DESKTOP-MISSMJIJ is not allowed to connect t ...

  9. Navicat 用ssh通道连接时总是报错 (报错信息:SSH:expected key exchange group packet form serve...

    转:https://blog.csdn.net/qq_27463323/article/details/76830731 之前下了一个Navicat 11.0 版本 用ssh通道连接时总是报错 (报错 ...

  10. Navicat连接本地数据库报错问题解决方案

    Navicat连接本地数据库报错问题解决方案 参考文章: (1)Navicat连接本地数据库报错问题解决方案 (2)https://www.cnblogs.com/wjah110/p/9811448. ...

最新文章

  1. css 背景图怎么设置自动填充满_CSS-布局与定位
  2. AbstractListView源码分析5
  3. [LeetCode] Interleaving String
  4. MQTT代理服务器特性对比
  5. centos LAMP菜鸟搭建过程
  6. 第一易,唯一难,为什么它是ofo、天学网的不二选择
  7. 如何把手机投影到电脑,电脑可以当作电视一样被投屏
  8. 《WEB安全渗透测试》(29)记一次HOST头投毒漏洞
  9. 【PhpSelenium】2.基本使用
  10. 三星手机「我的文件」应用闪退问题的解决方法
  11. 修改win10 ntp服务器地址,修改win10 ntp服务器地址
  12. 怎么把人物模型走路、跑步动画拼接起来
  13. 20182316胡泊 第2,3周学习总结
  14. 线控转向,包含设计说明书,carsim模型,MATLAB Simulink模型
  15. 阿里云(云呼叫中心)API接口
  16. 银盛支付再吃罚单!严监管下行业乱象难禁,平台发力B端应做到合规当先
  17. 把Excel批注的“红三角”放在单元格左上角_设置另类批注
  18. 关于Raptor的简单使用
  19. 软著申请具体需要哪些步骤呢?
  20. 瑞芯微RK3568详细参数以及应用场景介绍

热门文章

  1. WotoKOL卧兔网络:全球品牌出海峰会讲述站外引流技巧,探寻DTC出海流量增长点
  2. NOIP2007初赛普及组_阅读程序写结果3.2
  3. Python requests中params、data和json区别
  4. 雅阁更换变速箱油教程
  5. Consider defining a bean of type xxx.xxx.xxxxin your configura
  6. 区块链客户端--Python实现
  7. 【STM32Cube_01】软件简介以及安装明细教程
  8. 103-gold深入
  9. Android路由框架ARouter_若雪似风_新浪博客
  10. linux+sh++输入命令,【Linux 命令行与 shell 脚本编程大全】 14 处理用户输入