Die Public Key Infrastructure (PKI) ist ein Framework, das zur Verwaltung von digitalen Zertifikaten und öffentlichen/privaten Schlüsseln verwendet wird. Sie spielt eine zentrale Rolle bei der Sicherstellung von Vertraulichkeit, Integrität und Authentizität in Netzwerken.
In Ansible kann PKI genutzt werden, um SSH-Zugänge abzusichern, verschlüsselte Kommunikation zu gewährleisten und Anmeldungen ohne Passwort zu ermöglichen.
SSH (Secure Shell) ist ein Protokoll zur sicheren Verwaltung von Netzwerkdiensten über eine ungesicherte Verbindung. Es verwendet kryptografische Techniken, um die Kommunikation zu verschlüsseln und die Identität der beteiligten Parteien zu authentifizieren.
Ein SSH-Schlüsselpaar besteht aus einem öffentlichen und einem privaten Schlüssel. Der private Schlüssel bleibt auf dem lokalen System, während der öffentliche Schlüssel auf dem entfernten System gespeichert wird.
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"Dieser Befehl erstellt ein Schlüsselpaar mit einer Schlüssellänge von 4096 Bit und speichert es in der Standard-SSH-Konfiguration.
Der öffentliche Schlüssel kann mit dem folgenden Befehl an ein Zielsystem gesendet werden:
ssh-copy-id user@remote_hostDadurch wird der öffentliche Schlüssel zur Datei
~/.ssh/authorized_keys des Zielbenutzers auf dem entfernten
System hinzugefügt.
Ansible nutzt standardmäßig SSH zur Kommunikation mit den Zielknoten. Durch die Verwendung von SSH-Schlüsseln können Administratoren automatisierte Prozesse sicher durchführen, ohne bei jeder Ausführung Passwörter eingeben zu müssen.
- hosts: all
tasks:
- name: Überprüfen der Verbindung
ping:Dieses einfache Playbook überprüft die Erreichbarkeit aller Zielknoten, die im Inventar definiert sind, über SSH.
Ansible kann den SSH-Agent nutzen, um private Schlüssel im Speicher zu halten, wodurch mehrfache Passwortabfragen vermieden werden. Dies ist besonders nützlich, wenn Playbooks ausgeführt werden, die sich mit vielen Zielknoten verbinden müssen.
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsaAnsible ermöglicht es, SSH-spezifische Optionen direkt im Playbook oder über die Kommandozeile zu setzen.
- hosts: all
tasks:
- name: Einfache Kommandos über SSH ausführen
command: echo "Hello, world!"
vars:
ansible_ssh_private_key_file: /path/to/private_key
ansible_ssh_common_args: '-o StrictHostKeyChecking=no'Dieses Playbook führt ein einfaches Kommando auf allen Zielknoten aus und verwendet dabei den angegebenen privaten Schlüssel.
authorized_keys-Datei:
Achten Sie darauf, dass nur vertrauenswürdige öffentliche Schlüssel in
der authorized_keys-Datei der Zielknoten hinzugefügt
werden.