2016-05-13 2 views
2

Voici un cas d'ansible très simple qui m'a beaucoup dérangé.Ansible à Cisco IOS via SSH, avec le message "authentification échouée"

Ceci est le contenu de ansible.cfg:

[defaults] 
transport = paramiko 
hostfile = ./hosts 
host_key_checking = False 
timeout = 5 

le contenu des hôtes, le tout avec un utilisateur nommé "cisco" et le mot de passe "cisco" trop

[routers] 
R1 
R2 
R3 
... 

la variable hôte fichier (R1), similaire à R2, R3, ..., tout différent adresses IP:

--- 
ansible_ssh_host: 10.10.10.1 
ansible_ssh_user: cisco 
ansible_ssh_pass: cisco 

je peux SSH avec succès à ces ro uters via linux, mais quand je l'utilise ansible, il en résulta « échec d'authentification »:

fatal: [R1] => {'msg': 'FAILED: Authentication failed.', 'failed': True} 
fatal: [R2] => {'msg': 'FAILED: Authentication failed.', 'failed': True} 
... 

et j'ai testé la connectivité avec quelques une ligne commandes Ansible, obtenir encore des erreurs, même quand je entrer le nom d'utilisateur et mot de passe manuellement, par exemple:

> 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. 

Comment puis-je résoudre ce problème? les aides seront appréciées.

+0

I f J'ai compris cela en consultant le journal complet (paramiko.common.logging.basicConfig (niveau = paramiko.common.DEBUG), paramiko terminera la connexion si l'authentification de la clé publique a échoué, plutôt que de continuer à essayer le mot de passe. Donc, lors de l'utilisation de paramiko, le paramètre "look_for_keys" dans la méthode "connect()" DOIT être réglé sur False – nonemaw

+0

Après avoir défini look_for_keys = False, tout va bien – nonemaw

+1

pouvez-vous répondre à votre propre question avec un petit détail afin qu'il aide les autres. Merci –

Répondre

0

L'interpréteur Python connect() for paramiko connections peut être utilisé comme ceci:

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)

[& hellip;]

look_for_keys (bool) - définie sur False pour désactiver la recherche de la clé privée découvrable fichiers en ~/.ssh/

+0

Pour plus de clarté, Arbab Nazar ne cherchait pas la réponse; ils demandaient que ce soit écrit clairement pour la postérité *, l'objectif de SO. J'ai essayé d'ajuster cette réponse pour plus de clarté. Si vous pouvez ajouter plus d'une explication qui serait également appréciée. –