--- - name: Configure SSH hosts: main_server become: yes tasks: - name: Change SSH port lineinfile: path: /etc/ssh/sshd_config regexp: '^#?Port' line: "Port {{ main_ssh_port }}" - name: Secure SSH config lineinfile: path: /etc/ssh/sshd_config regexp: "^{{ item.regexp }}" line: "{{ item.line }}" loop: - { regexp: '^#?PermitRootLogin', line: 'PermitRootLogin no' } - { regexp: '^#?PubkeyAuthentication', line: 'PubkeyAuthentication yes' } - { regexp: '^#?PasswordAuthentication', line: 'PasswordAuthentication no' } - name: Setup SSH keys authorized_key: user: "{{ item }}" state: present key: "{{ user_ssh_key }}" loop: - "{{ ansible_user }}" - "{{ new_user}}" - name: Reload SSH service: name: ssh state: reloaded - name: Ensure SSH service is running ansible.builtin.service: name: ssh state: restarted enabled: true - name: Check if SSH is listening on the correct port become: yes shell: "ss -tulpn | grep :{{ main_ssh_port }}" register: ssh_port_check - name: show SSH port debug: var: ssh_port_check.stdout