2017-06-19 92 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

同意你的觀點(雖然大多數情況下在實際情況下,我們不能改變用戶現有的系統來修復它們)。 –