我正在尝试将ASA模块用于Ansible,但我很难连接到设备。
“普通”手动ssh适用于“admin”用户到ASA设备。
我经常收到此错误Failed to connect to the host via ssh: Permission denied
查看-vvv
输出,我可以看到ansible在执行任务时正在传递PasswordAuthentication=no
。
<192.168.1.64> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=admin -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/896d0497f8 192.168.1.64 '/bin/sh -c '"'"'echo ~ && sleep 0'"'"''
但是我无法在模块中找到可以更改的位置。有什么建议吗?
这是我的游戏:
---
- hosts: 192.168.1.64
any_errors_fatal: True
gather_facts: no
remote_user: admin
vars:
cli:
host: asav_lab
username: admin
password: "{{asa_admin_password}}"
transport: cli
authorize: yes
auth_pass: "{{asa_admin_password}}"
tasks:
- asa_command:
commands:
- show version
provider: "{{ cli }}"
详细输出:
TASK [asa_command] *****************************************************************************************************************************************************************************************
task path: /var/lib/awx/projects/platforms-ansible/asa_test_play.yaml:41
Using module file /usr/lib/python2.7/dist-packages/ansible/modules/network/asa/asa_command.py
<192.168.1.64> ESTABLISH SSH CONNECTION FOR USER: admin
<192.168.1.64> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=admin -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/896d0497f8 192.168.1.64 '/bin/sh -c '"'"'echo ~ && sleep 0'"'"''
<192.168.1.64> (255, '', 'ssh: connect to host 192.168.1.64 port 22: Connection refused\r\n')
fatal: [192.168.1.64]: UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: ssh: connect to host 192.168.1.64 port 22: Connection refused\r\n",
"unreachable": true
}
答案 0 :(得分:1)
您应该在localhost上运行模块(播放),而不是在Cisco设备上运行。
当然,请使用connection: local
答案 1 :(得分:0)
本地连接无法解决此问题。实际上没有很好的文章或视频显示如何解决此特定问题。 Ansible默认需要SSH密钥,因此保留默认连接类型要求您将公钥复制到您尝试连接的任何用户远程设备。登录您的Cisco设备,启用公钥验证,并将您的公钥复制到设备。如果这不能解决您的问题,我强烈建议您使用Paramiko切换到Python脚本。它是一个非常完善的库,允许您远程发送命令,您也可以备份配置:
http://paramiko-docs.readthedocs.io/en/latest/api/client.html