- ---
- - import_role: name='service'
- vars:
- service_name: 'ssh'
- service_packages:
- - 'openssh-server'
- - 'openssh-sftp-server'
-
- - name: 'upload user and server ca'
- copy:
- content: |
- {% for ca in item.1 %}
- {{ ca }}
- {% endfor %}
- dest: '/etc/ssh/{{ item.0 }}_ca.pub'
- vars:
- cas: '{{ item.1 }}'
- notify: 'restart ssh'
- loop:
- - [ 'user', '{{ ssh_user_ca }}' ]
- - [ 'server', '{{ ssh_server_ca }}' ]
- tags:
- - 'ssh_certs'
-
- - name: 'generate and sign host certificate'
- import_role: name='ca_cert'
- vars:
- ca_cert_common_name: '{{ host_fqdn }}'
- ca_cert_proto: 'ssh'
- ca_cert_ssh_ca_path: '/etc/ssh/server_ca.pub'
- ca_cert_ssh_key_path: '/etc/ssh/ssh_host_ed25519_key'
- tags:
- - 'ssh_certs'
-
- - name: 'add host certificate to sshd config'
- lineinfile:
- line: 'HostCertificate /etc/ssh/ssh_host_ed25519_key-cert.pub'
- dest: '/etc/ssh/sshd_config'
- regexp: '^HostCertificate *'
- notify: 'restart ssh'
- tags:
- - 'ssh_certs'
-
- - name: 'add user ca to sshd config'
- lineinfile:
- line: 'TrustedUserCAKeys /etc/ssh/user_ca.pub'
- dest: '/etc/ssh/sshd_config'
- regexp: '^TrustedUserCAKeys *'
- notify: 'restart ssh'
- tags:
- - 'ssh_certs'
-
- - name: 'permit root login only with certificate'
- lineinfile:
- line: 'PermitRootLogin without-password'
- dest: '/etc/ssh/sshd_config'
- regexp: '^PermitRootLogin *'
- notify: 'restart ssh'
-
- - meta: 'flush_handlers'
-
- - name: 'waiting for ssh on {{ inventory_hostname }} to start'
- wait_for:
- host: '{{ hostvars | ip_from_inventory(inventory_hostname) }}'
- port: 22
- timeout: 30
- delegate_to: 'localhost'
- delegate_facts: true
|