2016-07-25 3 views
1

Wenn Textbuch läuft given in this answer mit -vvv ich folgendes Protokoll erhalten:Implizite SSH-Verbindung Argumente in ansible

<192.168.1.109> SSH: EXEC ssh -C -q -o PasswordAuthentication=yes 
    -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null 
    -o ControlMaster=auto -o ControlPersist=60s 
    -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no 
    -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey 
    -o PasswordAuthentication=no -o ConnectTimeout=120 
    -o ControlPath=/Users/techraf/.ansible/cp/ansible-ssh-%h-%p-%r 192.168.1.109 
    '/bin/sh -c '"'"'(umask 77 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1469485176.18-28678795304310 `" && echo ansible-tmp-1469485176.18-28678795304310="` echo $HOME/.ansible/tmp/ansible-tmp-1469485176.18-28678795304310 `") && sleep 0'"'"'' 

Der erste Teil des SSH-Argumente von ansible.cfg in dem aktuellen Verzeichnis aufgenommen wird (das ist, was ich beabsichtigt) :

[ssh_connection] 
ssh_args = -o PasswordAuthentication=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ControlMaster=auto -o ControlPersist=60s 

wo der zweite Teil tut:

-o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no 
-o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey 
-o PasswordAuthentication=no -o ConnectTimeout=120 

kommen aus?

Mein Ziel ist es, dieses Playbook mit Passwort-Authentifizierung ausführen, aber die letztere Gruppe von Argumenten verhindert es.


Ich habe das überprüft folgende gelöscht/nicht existent:

  • (I Homebrew installiert ansible auf OS X leite)
  • $ANSIBLE_CONFIG Umgebungsvariable
  • .ansible.cfg (in das Home-Verzeichnis)

Ich benutze Ansible 2.1. 0.0.

Antwort

1

Wenn die Verbindung eingerichtet wird, glaubt sie nicht, dass Sie ein Kennwort festgelegt haben, also versucht es, das aus den gültigen Verhandlungsoptionen zu entfernen. Weitere Informationen finden Sie unter the source oder stellen Sie sicher, dass ansible_password auf dem betreffenden Host festgelegt ist.

0

Mein Ziel ist es, dieses Playbook mit Passwortauthentifizierung auszuführen, aber die letztere Gruppe von Argumenten verhindert es.

Sie benötigen einen zusätzlichen Parameter hinzufügen für ansible Passwort-Authentifizierung zu verwenden:

-k, --ask-pass  ask for connection password 

ansible wird dann nach Ihrem Passwort auffordern einmal, dann das Passwort verwenden, um in diesem Lauf auf allen Servern zu verbinden.


Sie sollten im Allgemeinen vermeiden, Kennwortauth für ssh zu verwenden. Es ist nicht nur nervig (man muss das Passwort immer eingeben), sondern öffnet den Server für Brute-Force-Angriffe. Selbst wenn Sie diese mit anderen Mitteln (z. B. fail2ban) blockieren, ist es immer noch keine gute Idee. Wenn Sie nicht möchten, dass Schlüssel ohne Passwort authentifiziert werden, können Sie ein Passwort auf die Schlüssel setzen und sie beim Booten mit einem ssh-Agenten entschlüsseln.

+0

Vielen Dank für Ihre Kommentare. Sie haben Recht, jedoch beachten Sie bitte, dass Sie Ansible-Playbooks verwenden können, um die Schlüssel auf einen frisch eingerichteten Server hochzuladen, auf den nur mit einem Passwort-Login zugegriffen werden kann. Aus diesem Grund habe ich speziell auf einen Playbook-Benutzer hingewiesen, der die IP des Ziels anfordert. – techraf