81 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
| ---
 | |
| - name: Setup complete SSH key authentication for browser host
 | |
|   hosts: browser
 | |
|   become: yes
 | |
|   vars:
 | |
|     target_user: ben
 | |
|     ssh_key_comment: "ansible-generated-key-for-{{ inventory_hostname }}"
 | |
| 
 | |
|   tasks:
 | |
|     - name: Copy existing Ed25519 SSH public key to target user
 | |
|       copy:
 | |
|         src: /root/.ssh/id_ed25519.pub
 | |
|         dest: /home/{{ target_user }}/.ssh/id_ed25519.pub
 | |
|         owner: "{{ target_user }}"
 | |
|         group: "{{ target_user }}"
 | |
|         mode: '0644'
 | |
| 
 | |
|     - name: Copy existing Ed25519 SSH private key to target user
 | |
|       copy:
 | |
|         src: /root/.ssh/id_ed25519
 | |
|         dest: /home/{{ target_user }}/.ssh/id_ed25519
 | |
|         owner: "{{ target_user }}"
 | |
|         group: "{{ target_user }}"
 | |
|         mode: '0600'
 | |
| 
 | |
|     - name: Get SSH public key content
 | |
|       command: cat /home/{{ target_user }}/.ssh/id_ed25519.pub
 | |
|       register: ssh_public_key
 | |
|       become_user: "{{ target_user }}"
 | |
|       changed_when: false
 | |
| 
 | |
|     - name: Ensure .ssh directory exists for user
 | |
|       file:
 | |
|         path: /home/{{ target_user }}/.ssh
 | |
|         state: directory
 | |
|         owner: "{{ target_user }}"
 | |
|         group: "{{ target_user }}"
 | |
|         mode: '0700'
 | |
| 
 | |
|     - name: Add public key to authorized_keys
 | |
|       authorized_key:
 | |
|         user: "{{ target_user }}"
 | |
|         state: present
 | |
|         key: "{{ ssh_public_key.stdout }}"
 | |
|       become_user: "{{ target_user }}"
 | |
| 
 | |
|     - name: Configure SSH to prefer key authentication
 | |
|       lineinfile:
 | |
|         path: /etc/ssh/sshd_config
 | |
|         regexp: '^PasswordAuthentication'
 | |
|         line: 'PasswordAuthentication yes'
 | |
|         backup: yes
 | |
|       notify: restart sshd
 | |
|       when: ansible_connection != 'local'
 | |
| 
 | |
|     - name: Configure SSH to allow key authentication
 | |
|       lineinfile:
 | |
|         path: /etc/ssh/sshd_config
 | |
|         regexp: '^PubkeyAuthentication'
 | |
|         line: 'PubkeyAuthentication yes'
 | |
|         backup: yes
 | |
|       notify: restart sshd
 | |
|       when: ansible_connection != 'local'
 | |
| 
 | |
|     - name: Configure SSH authorized keys file permissions
 | |
|       file:
 | |
|         path: /home/{{ target_user }}/.ssh/authorized_keys
 | |
|         owner: "{{ target_user }}"
 | |
|         group: "{{ target_user }}"
 | |
|         mode: '0600'
 | |
| 
 | |
|     - name: Display success message
 | |
|       debug:
 | |
|         msg: "SSH key authentication has been configured for user {{ target_user }} on {{ inventory_hostname }}"
 | |
| 
 | |
|   handlers:
 | |
|     - name: restart sshd
 | |
|       systemd:
 | |
|         name: sshd
 | |
|         state: restarted
 | |
|       when: ansible_connection != 'local' |