按照在线和几本书中的说明后,我不确定为什么会这样。我觉得缺少设置,但这里是设置:
我正在尝试使用命令:
ansible all -u $USER -m ping -vvvv
显然使用-vvvv进行调试,但除了它说它正在尝试连接的事实之外没有多少输出。我收到以下错误:
S4 | FAILED => FAILED: Authentication failed.
S4代表交换机4,思科交换机我试图自动配置并显示命令。我知道我在host_vars文件中设置的密码是100%是正确的,因为当我从标准SSH客户端使用它时它会起作用。
这是我在ansible.cfg文件中的非默认配置设置:
[defaults]
transport=paramiko
hostfile = ./myhosts
host_key_checking=False
timeout = 5
我的myhosts文件:
[cisco-switches]
S4
我的S4的host_vars文件:
ansible_ssh_host: 192.168.1.12
ansible_ssh_pass: password
我目前的版本是1.9.1,在Centos VM上运行。我确实在交换机的管理接口上应用了ACL,但它允许来自此特定IP的远程连接。
请指教。
答案 0 :(得分:1)
由于您使用ansible来自动化Cisco交换机中的命令,我想您希望在没有提示输入密码的情况下执行与交换机的SSH连接,或者请求按[Y / N]确认连接。
为此,我建议在交换机上配置Cisco IOS SSH服务器以执行基于RSA的用户身份验证。
首先,您需要在Linux机器上生成RSA密钥对:
ssh-keygen -t rsa -b 1024
注意:您可以使用2048而不是1024,但考虑到某些IOS版本将接受最多254个字符的ssh公钥。
在交换机侧:
conf t
ip ssh pubkey-chain
username test
key-string
Copy the entire public key as appears in the cat id_rsa.pub
including the ssh-rsa and username@hostname.
Please note that some IOS versions will accept
maximum 254 characters.
You can paste multiple lines.
exit
exit
如果你需要那个'测试'用户可以执行特权IOS命令:
username test privilege 15 secret _TEXT_CLEAR_PASSWORD_
然后,从Linux机箱测试您的连接,以便将交换机添加到known_hosts文件。这只会发生在known_hosts文件中找不到的每个交换机/主机一次:
ssh test@10.0.0.1
The authenticity of host '10.0.0.1 (10.0.0.1)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:d6:4b:d1:67.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.1' (RSA) to the list of known hosts.
ciscoswitch#
ciscoswitch#exit
最后使用ansible通过SSH和原始模块测试连接,例如:
ansible inventory -m raw -a "show env all" -u test
我希望你觉得它很有用。