2017-06-19 93 views
0

我正在尝试为Ansible使用ASA模块,并且我无法连接到设备。Ansible与思科ASA接入问题

“正常”手动ssh适用于“管理员”用户使用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 
} 

回答

1

你应该在本地主机上运行的模块(播放),而不是思科设备上。

当然,使用connection: local

0

连接本地不会解决这个问题。真的没有好的文章或视频显示如何解决这一特定问题。 Ansible默认情况下需要SSH密钥,因此保持默认的连接类型要求您将公钥复制到您尝试连接到远程设备的任何用户。登录您的思科设备,启用公钥认证,并将您的公钥复制到设备。如果这不能解决您的问题,我强烈建议使用Paramiko切换到Python脚本。这是一个非常发达的库,允许你远程发送命令,你可以备份你的配置,以及:

http://paramiko-docs.readthedocs.io/en/latest/api/client.html

+0

'SSH:连接到主机192.168.1.64端口22:连接refused'指:SSH服务器不听!改变另一个工具包似乎在这种情况下完全矫枉过正:-) –

+0

我明白你为什么会这么想,但OP在他的文章中声明:​​“Normal”手动ssh对于“admin”用户对ASA设备工作正常。该设备正在监听,并且引发的异常是错误的,当使用Ansible时,继续进行故障排除的麻烦更大,而这显然不适合软件的使用情况,而且,创建一个Python脚本来使用Paramiko进行网络设备管理正好有8行代码,我很难相信这是过分的。 – macattack2241

+0

同意你的观点(虽然大多数情况下在实际情况下,我们不能改变用户现有的系统来修复它们)。 –