通过 SSH Ansible 到 Cisco IOS,并显示“身份验证失败”消息

non*_*maw 5 ssh cisco ansible

这是一个非常简单的 ansible 案例,这让我很困扰。

这是ansible.cfg的内容:

[defaults]
transport = paramiko
hostfile = ./hosts
host_key_checking = False
timeout = 5
Run Code Online (Sandbox Code Playgroud)

主机的内容,所有用户名为“cisco”,密码也为“cisco”

[routers]
R1
R2
R3
...
Run Code Online (Sandbox Code Playgroud)

主机变量文件(R1),与R2,R3,...类似,只是IP地址不同:

---
ansible_ssh_host: 10.10.10.1
ansible_ssh_user: cisco
ansible_ssh_pass: cisco
Run Code Online (Sandbox Code Playgroud)

我可以通过 linux 成功 SSH 到这些路由器,但是当我使用 ansible 时,它​​导致“身份验证失败”:

fatal: [R1] => {'msg': 'FAILED: Authentication failed.', 'failed': True}
fatal: [R2] => {'msg': 'FAILED: Authentication failed.', 'failed': True}
...
Run Code Online (Sandbox Code Playgroud)

我用一些单行ansible命令测试了连接性,即使我手动输入用户名和密码,仍然出现错误,例如:

> ansible routers -m raw
R1 | FAILED => FAILED: Authentication failed.
R2 | FAILED => FAILED: Authentication failed.    

> ansible routers -u cisco -m raw
R1 | FAILED => FAILED: Authentication failed.
R2 | FAILED => FAILED: Authentication failed.

> ansible routers -u cisco -m raw -k
SSH password:
R1 | FAILED => FAILED: Authentication failed.
R2 | FAILED => FAILED: Authentication failed.
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?帮助将不胜感激。

小智 2

用于 paramiko 连接的Python 解释器connect()可以像这样使用:

\n
\n

connect(hostname, port=22, username=None, password=None, pkey=None, key_filename=None, timeout=None, allow_agent=True, look_for_keys=True, compress=False, sock=None, gss_auth=False, gss_kex=False, gss_deleg_creds=True, gss_host=None, banner_timeout=None, auth_timeout=None)

\n

[\xe2\x80\xa6]

\n

Look_for_keys (bool) \xe2\x80\x93 设置为 False 以禁用在以下位置搜索可发现的私钥文件~/.ssh/

\n
\n

  • 为清楚起见,阿尔巴布·纳扎尔并不是在寻找答案;而是在寻找答案。他们*要求为了子孙后代*而将其清楚地写下来*,这是 SO 的目标。我尝试调整这个答案以获得更好的清晰度。如果您可以添加更多解释,我们将不胜感激。 (2认同)