linux-system-roles.ssh
ssh
Eine Ansible-Rolle zur Verwaltung der Konfiguration von SSH-Clients.
Anforderungen
Diese Rolle sollte auf jedem System funktionieren, das einen OpenSSH-Client bereitstellt und von Ansible unterstützt wird. Die Rolle wurde getestet auf:
- RHEL/CentOS 6, 7, 8, 9
- Fedora
- Debian
- Ubuntu
Sammlungsvoraussetzungen
Um rpm-ostree
Systeme zu verwalten, benötigt die Rolle Module aus externen Sammlungen. Verwenden Sie den folgenden Befehl, um diese zu installieren:
ansible-galaxy collection install -vv -r meta/collection-requirements.yml
Rollenvariablen
Standardmäßig sollte die Rolle die Systemkonfiguration nicht ändern und eine globale ssh_config
generieren, die den OS-Standardeinstellungen entspricht (die generierte Konfiguration behält keine Kommentare und die Reihenfolge der Optionen).
ssh_user
Standardmäßig (null
) ändert die Rolle die globale Konfiguration für alle Benutzer. Andere Werte werden als Benutzername interpretiert, und die Rolle wird die benutzerspezifische Konfiguration unter ~/.ssh/config
des angegebenen Benutzers ändern. Der Benutzer muss existieren, bevor diese Rolle aufgerufen wird, da es sonst fehlschlägt.
ssh_skip_defaults
Standardmäßig (auto
) schreibt die Rolle die systemweite Konfigurationsdatei /etc/ssh/ssh_config
und behält die dort definierten OS-Standardeinstellungen (true). Dies wird automatisch deaktiviert, wenn eine Drop-in-Konfigurationsdatei erstellt wird (ssh_drop_in_name!=null
) oder wenn eine benutzerspezifische Konfigurationsdatei erstellt wird (ssh_user!=null
).
ssh_drop_in_name
Dies definiert den Namen für die Drop-in-Konfigurationsdatei, die im systemweiten Drop-in-Verzeichnis abgelegt werden soll. Der Name wird in der Vorlage /etc/ssh/ssh_config.d/{name}.conf
verwendet, um auf die zu ändernde Konfigurationsdatei zu verweisen. Wenn das System kein Drop-in-Verzeichnis unterstützt, sorgt das Setzen dieser Option dafür, dass das Playbook fehlschlägt. Standardmäßig ist null
, wenn das System kein Drop-in-Verzeichnis unterstützt, und 00-ansible
andernfalls.
Das empfohlene Format ist NN-name
, wobei NN
eine zweistellige Zahl zum Sortieren ist und name
ein beschreibender Name für den Inhalt oder den Eigentümer der Datei ist.
ssh dict
Ein Wörterbuch, das Konfigurationsoptionen und entsprechende Werte enthält. Siehe Beispiel unten.
ssh_...
:
Einfache Variablen, die aus dem Optionsnamen mit dem Präfix ssh_
bestehen, können anstelle des oben genannten Wörterbuchs verwendet werden. Die einfache Variable überschreibt die Werte im obigen Wörterbuch.
ssh_additional_packages
Diese Rolle installiert automatisch Pakete, die für die häufigsten Anwendungsfälle auf der gegebenen Plattform benötigt werden. Wenn zusätzliche Pakete installiert werden müssen (zum Beispiel openssh-keysign
für die hostbasierte Authentifizierung), können sie in dieser Variablen angegeben werden.
ssh_config_file
Die Konfigurationsdatei, die von dieser Rolle geschrieben wird. Der Standard wird durch die Vorlage /etc/ssh/ssh_config.d/{name}.conf
definiert, wenn das System ein Drop-in-Verzeichnis hat, oder /etc/ssh/ssh_config
andernfalls. Wenn ssh_user!=null
, ist der Standard ~/.ssh/config
.
Um /etc/ssh/ssh_config
zu schreiben, auch wenn ein Drop-in-Verzeichnis unterstützt wird, setzen Sie ssh_drop_in_name
auf null
.
ssh_config_owner, ssh_config_group, ssh_config_mode
Der Eigentümer, die Gruppe und der Modus der erstellten Konfigurationsdatei. Die Dateien gehören standardmäßig root:root
mit dem Modus 0644
, es sei denn, ssh_user!=null
. In diesem Fall beträgt der Modus 0600
, und Eigentümer und Gruppe werden aus dem Benutzernamen abgeleitet, der in der ssh_user
-Variablen angegeben ist.
ssh_backup
Wenn auf false gesetzt, wird die ursprüngliche ssh_config
-Datei nicht gesichert. Standard ist true.
ssh_transactional_update_reboot_ok
Diese Variable wird verwendet, um Neustarts zu handhaben, die von transaktionalen Updates erforderlich sind. Wenn ein transaktionales Update einen Neustart erfordert, fährt die Rolle mit dem Neustart fort, wenn ssh_transactional_update_reboot_ok
auf true gesetzt ist. Wenn auf false gesetzt, wird die Rolle den Benutzer benachrichtigen, dass ein Neustart erforderlich ist, und ermöglicht eine benutzerdefinierte Handhabung dieser Anforderung. Wenn diese Variable nicht gesetzt ist, wird die Rolle fehlschlagen, um sicherzustellen, dass die Neustartanforderung nicht übersehen wird.
Beispiel-Playbook
Das folgende Playbook konfiguriert die SSH-Konfiguration des root
-Benutzers in seinem Heimatverzeichnis so, dass Kompression, Control-Master-Multiplexing und GSSAPI-Authentifizierung im Block "Match final all" aktiviert sind. Zusätzlich wird ein Alias "example" für die Verbindung zum Host example.com als Benutzer somebody erstellt. Die letzte Zeile deaktiviert das X11-Forwarding.
- name: SSH-Clients verwalten
hosts: all
tasks:
- name: SSH-Clients konfigurieren
include_role:
name: linux-system-roles.ssh
vars:
ssh_user: root
ssh:
Compression: true
ControlMaster: auto
ControlPath: ~/.ssh/.cm%C
Match:
- Condition: "final all"
GSSAPIAuthentication: true
Host:
- Condition: example
Hostname: example.com
User: somebody
ssh_ForwardX11: false
Weitere Beispiele finden Sie im Verzeichnis examples/
.
rpm-ostree
Siehe README-ostree.md
Lizenz
LGPLv3, siehe die Datei LICENSE für weitere Informationen.
Autorinformationen
Jakub Jelen, 2021 - 2023
OpenSSH SSH client configuration
ansible-galaxy install linux-system-roles.ssh