linux-system-roles.ssh
ssh
Rola Ansible do zarządzania konfiguracją klientów ssh.
Wymagania
Ta rola powinna działać na każdym systemie, który obsługuje klienta openssh i jest wspierany przez ansible. Rola była testowana na:
- RHEL/CentOS 6, 7, 8, 9
- Fedora
- Debian
- Ubuntu
Wymagania dotyczące kolekcji
Aby zarządzać systemami rpm-ostree
, rola wymaga modułów z zewnętrznych
kolekcji. Użyj poniższego polecenia, aby je zainstalować:
ansible-galaxy collection install -vv -r meta/collection-requirements.yml
Zmienne roli
Domyślnie rola nie powinna modyfikować konfiguracji systemu i generować
globalnego ssh_config
, który odpowiada domyślnym ustawieniom systemu (generowana konfiguracja
nie zachowuje komentarzy i kolejności opcji).
ssh_user
Domyślnie (null
) rola zmodyfikuje globalną konfigurację dla wszystkich
użytkowników. Inne wartości będą interpretowane jako nazwa użytkownika, a rola
zmodyfikuje konfigurację dla konkretnego użytkownika, przechowywaną w ~/.ssh/config
.
Użytkownik musi istnieć przed wywołaniem tej roli, w przeciwnym razie operacja zakończy się niepowodzeniem.
ssh_skip_defaults
Domyślnie (auto
), rola zapisuje globalny plik konfiguracyjny
/etc/ssh/ssh_config
i zachowuje domyślne ustawienia systemu tam zdefiniowane (true).
To automatycznie jest wyłączane, gdy tworzony jest plik konfiguracyjny drop-in
(ssh_drop_in_name!=null
) lub gdy tworzony jest plik konfiguracyjny dla użytkownika
(ssh_user!=null
).
ssh_drop_in_name
Określa nazwę pliku konfiguracyjnego drop-in, który ma być umieszczony w
systemowym katalogu drop-in. Nazwa ta jest używana w szablonie
/etc/ssh/ssh_config.d/{name}.conf
, aby odwołać się do pliku konfiguracyjnego do
zmodyfikowania. Jeśli system nie obsługuje katalogu drop-in, ustawienie tej
opcji spowoduje błąd. Domyślna wartość to null
, jeśli system nie
obsługuje katalogu drop-in, oraz 00-ansible
w przeciwnym przypadku.
Zalecany format to NN-nazwa
, gdzie NN
to dwucyfrowy numer używany do
sortowania, a nazwa
to dowolna opisowa nazwa zawartości lub właściciela
pliku.
ssh dict
Słownik zawierający opcje konfiguracyjne oraz ich wartości. Zobacz przykład poniżej.
ssh_...
:
Proste zmienne składające się z nazwy opcji z prefiksem ssh_
mogą być
używane zamiast powyższego słownika. Prosta zmienna nadpisuje wartości w powyższym słowniku.
ssh_additional_packages
Ta rola automatycznie instaluje pakiety potrzebne dla najczęściej występujących przypadków
użycia na danej platformie. Jeśli wymagane są dodatkowe pakiety (na
przykład openssh-keysign
dla uwierzytelniania opartego na hoście), można je określić
w tej zmiennej.
ssh_config_file
Plik konfiguracyjny, który zostanie zapisany przez tę rolę. Domyślna wartość to
szablon /etc/ssh/ssh_config.d/{name}.conf
, jeśli system ma katalog drop-in, lub
/etc/ssh/ssh_config
w przeciwnym razie. Jeśli ssh_user!=null
, domyślna wartość to ~/.ssh/config
.
Aby zapisać /etc/ssh/ssh_config
, nawet jeśli katalog drop-in jest obsługiwany, ustaw
ssh_drop_in_name
na null
.
ssh_config_owner, ssh_config_group, ssh_config_mode
Właściciel, grupa i tryb utworzonego pliku konfiguracyjnego. Pliki są
właścicielami root:root
z trybem 0644
domyślnie, chyba że
ssh_user!=null
. W tym przypadku tryb to 0600
, a właściciel i
grupa są określane na podstawie nazwy użytkownika podanej w zmiennej ssh_user
.
ssh_backup
Gdy ustawione na false, oryginalny plik ssh_config
nie jest kopiowany. Domyślnie jest true.
ssh_transactional_update_reboot_ok
Ta zmienna służy do zarządzania ponownymi uruchomieniami wymaganymi przez aktualizacje transakcyjne.
Jeśli transakcyjna aktualizacja wymaga ponownego uruchomienia, rola będzie kontynuować restart,
jeśli ssh_transactional_update_reboot_ok
jest ustawione na true. Jeśli ustawione na
false, rola powiadomi użytkownika, że wymagany jest restart, co pozwala na
dostosowanie obsługi wymogu ponownego uruchomienia. Jeśli ta zmienna nie jest ustawiona,
rola zakończy się niepowodzeniem, aby upewnić się, że wymóg ponownego uruchomienia nie zostanie pominięty.
Przykład Playbooka
Poniższy playbook konfiguruje konfigurację ssh użytkownika root
w jego
katalogu domowym, aby używał kompresji, multiplexingu control-master oraz
włączył uwierzytelnianie GSSAPI w bloku "match final all". Dodatkowo, tworzy alias
"example" do łączenia się z hostem example.com jako użytkownik somebody. Ostatnia linia
wyłącza przesyłanie X11.
- name: Zarządzaj klientami ssh
hosts: all
tasks:
- name: Skonfiguruj klientów ssh
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
Więcej przykładów znajdziesz w katalogu examples/
.
rpm-ostree
Zobacz README-ostree.md
Licencja
LGPLv3, szczegóły znajdują się w pliku LICENSE.
Informacje o autorze
Jakub Jelen, 2021 - 2023
OpenSSH SSH client configuration
ansible-galaxy install linux-system-roles.ssh