linux-system-roles.ssh

ssh

ansible-centos.yml ansible-debian.yml ansible-fedora.yml ansible-lint.yml ansible-test.yml ansible-ubuntu.yml markdownlint.yml shellcheck.yml tft.yml tft_citest_bad.yml woke.yml

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