Puncte:2

Cum să adăugați chei ssh prin Ansible atunci când AuthorizedKeysFile este setat?

drapel br

Cum pot face ca Ansible să completeze fișierul corect când am /etc/ssh/sshd_config are AuthorizedKeysFile setat la /etc/ssh/authorized_keys/%u? Ansible pare să ignore setarea și plasează cheile $HOME/.ssh/authorized_keys

cartea de joc:

---
- gazde: toate
  vars:
  vars_files:
    - ../group_vars/ssh_root_authorized_keys.yml
  gather_facts: false

  sarcini:
    - nume: configurați mai multe chei autorizate
      cheie_autorizată:
        utilizator: root
        stare: prezent
        cheie: „{{ item.key }}”
      with_items: „{{ root_auth_keys }}”

ssh_root_authorized_keys.yml

root_auth_keys:
  - nume: backup@gazdă
    cheie: "{{ lookup('fișier', '../group_vars/pubkeys/[email protected]') }}"

  - nume: nagios@host
    cheie: "{{ lookup('file', '../group_vars/pubkeys/[email protected]') }}"
Puncte:1
drapel in

De la documentație:

cale: cale alternativă la fișierul authorized_keys

  sarcini:
    - nume: configurați mai multe chei autorizate
      cheie_autorizată:
        utilizator: root
        stare: prezent
        cheie: „{{ item.key }}”
        cale: „/etc/ssh/authorized_keys/root”
      with_items: „{{ root_auth_keys }}”
Nstevens avatar
drapel br
Mulțumiri. Speram că Ansible era „conștient de cale”, dar cred că nu. Presupun că un `stat:` poate ajuta aici, deoarece am unele gazde care nu au setat `AuthorizedKeysFile`. Vreo modalitate ușoară de a determina dacă acest element de configurare sshd este diferit de cel implicit? Mă gândesc la `shell:` sau `cmd:` cu `grep`, dar poate nu.
Puncte:0
drapel br

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] }}”

  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]

  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('/')) }}”

  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']

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.