Ansibel mit SSH-Schlüsseln

7

Wechsel von Puppet zu Ansible. Wie die Tatsache, dass es agentenlos und SSH-gesteuert ist. Ich habe gerade zwei Test-VMs eingerichtet. Einer als Ansible-Server (ja Overkill) und der andere als Beispiel-Client (zufälliger Linux-Server). Alle unsere Server verwenden nur die Authentifizierung mit öffentlich-privaten Schlüsselpaaren. Dies ist für Ansible zunächst etwas problematisch. Ich bin mir ziemlich (fast sicher), dass Ansible mit Schlüsselpaaren arbeiten kann, aber ich kann anscheinend kein gutes Beispiel dafür finden.

Ich habe ein Schlüsselpaar speziell für Ansible erstellt, indem ich a

ssh-keygen -t rsa -b 4096

Ich habe dann den öffentlichen Schlüssel auf den Client kopiert. Die Schlüsselpaarauthentifizierung funktioniert hervorragend, wenn ich sie über Standard-SSH getestet habe. Testen Sie jetzt Ansible. Ich habe den Testclient in die Ansible-Hosts-Datei eingefügt und die einzige Syntax verwendet, die halbwegs korrekt aussah, damit das Schlüsselpaar funktioniert.

[TEST]
10.0.0.5 ansible_ssh_private_key_file=~/.ssh/id_rsa

Wenn ich versuche, nur ein grundlegendes Testmodul wie dieses auszuführen

sudo ansible all -m ping

Ich erhalte die folgende Fehlermeldung

10.0.0.5 | FAILED => SSH Error: Permission denied (publickey,password).
while connecting to 10.0.0.5:22
It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.

Offensichtlich ist meine Syntax oder mein konzeptionelles Verständnis für die Einrichtung von Ansible zur Verwendung von Schlüsselpaaren fehlerhaft. Irgendwelche Vorschläge? Vielen Dank

Atomiklan
quelle

Antworten:

7

DUH! Es war richtig in der ansible Konfigurationsdatei (/etc/ansible/ansible.cfg)

# if set, always use this private key file for authentication, same as
# if passing --private-key to ansible or ansible-playbook
private_key_file = /home/<username>/.ssh/id_rsa

Jetzt scheint alles zu funktionieren

10.0.0.5 | success >> {
"changed": false,
"ping": "pong"
}
Atomiklan
quelle
Können Sie bestätigen, welchen Wert Ihr 'ansible_user' hat, wenn Sie Ihr ansible-Skript ausführen? In meinem Fall ist die id_rsa in meinem Home-Ordner vorhanden, aber das ansible-Skript wird als remote_user ausgeführt, der dann aufgrund von Berechtigungen nicht auf die lokale private_key_file zugreifen kann.
Smaragdjava
2

Wenn Sie jemals wieder auf SSH-Probleme mit ansible stoßen, fügen Sie -vvv zu den Befehlszeilenoptionen hinzu, um zu erfahren, was schief gelaufen ist.

Ned von Sdrawde
quelle