Există câțiva pași pentru a pregăti această funcționalitate. Mai întâi, obțineți valoarea parametrului. Ar putea exista mai multe opțiuni, de ex. în mod implicit
shell> sudo sshd -T | grep authorizedkeysfile
authorizedkeysfile .ssh/authorized_keys .ssh/authorized_keys2
De exemplu, obțineți primul
- shell: sshd -T | grep authorizedkeysfile
înregistrare: rezultat
deveni: adevărat
- set_fact:
AuthorizedKeysFile: „{{ (result.stdout|split)[1] }}”
dă
AuthorizedKeysFile: .ssh/authorized_keys
Parametrul AuthorizedKeysFile poate conține %u
și %h
. Vedea Locația fișierului cheilor autorizate
%h va fi înlocuit cu directorul principal al utilizatorului care este autentificat și %u cu numele de conectare al utilizatorului
Pregătiți baza de date a directoarelor de acasă
- getent:
baza de date: passwd
Implicit, modulul getent stochează baza de date passwd în dicționar getent_passwd. Acasă este al 4-lea atribut, de ex.
- depanare:
var: getent_passwd['root'][4]
dă
getent_passwd['rădăcină'][4]: /rădăcină
Acum, având în vedere datele
auth_keys:
rădăcină: [key1, key2, key3]
puteți testa funcționalitatea
- shell: sshd -T | grep authorizedkeysfile
înregistrare: rezultat
deveni: adevărat
- set_fact:
AuthorizedKeysFile: „{{ (result.stdout|split)[1] }}”
- getent:
baza de date: passwd
- depanare:
mesaj: |
cale: {{ _cale }}
chei: {{ item.value }}
buclă: „{{ auth_keys|dict2items }}”
vars:
_user: „{{ item.key }}”
_home: „{{ getent_passwd[item.key][4] }}”
_akf: „{{ AuthorizedKeysFile|regex_replace('%u', _user)|
regex_replace('%h', _home) }}"
_cale: „{{ (_akf.0 == '/')|ternar(_akf, [_home, _akf]|join('/')) }}”
dă
mesaj: |-
cale: /root/.ssh/authorized_keys
taste: ['key1', 'key2', 'key3']
Dacă modificați parametrul
shell> sudo sshd -T | grep authorizedkeysfile
authorizedkeysfile /etc/ssh/authorized_keys/%u
redarea va obține locația corectă a fișierului de chei autorizate
mesaj: |-
calea: /etc/ssh/authorized_keys/root
taste: ['key1', 'key2', 'key3']