62 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			YAML
		
	
	
	
| ---
 | |
| - name: Setup SSH key authentication for browser host
 | |
|  hosts: browser
 | |
|  become: yes
 | |
|  vars:
 | |
|     target_user: ben
 | |
|     ssh_key_comment: "ansible-generated-key"
 | |
|   tasks:
 | |
|     - name: Generate SSH key pair if it doesn't exist
 | |
|       user:
 | |
|         name: "{{ target_user }}"
 | |
|         generate_ssh_key: yes
 | |
|         ssh_key_bits: 4096
 | |
|         ssh_key_comment: "{{ ssh_key_comment }}"
 | |
|       become_user: "{{ target_user }}"
 | |
| 
 | |
|     - name: Get SSH public key content
 | |
|       command: cat /home/{{ target_user }}/.ssh/id_rsa.pub
 | |
|       register: ssh_public_key
 | |
|       become_user: "{{ target_user }}"
 | |
|       changed_when: false
 | |
| 
 | |
|     - name: Display SSH public key for manual configuration
 | |
|       debug:
 | |
|         msg: |
 | |
|           SSH Public Key for {{ inventory_hostname }}:
 | |
|           {{ ssh_public_key.stdout }}
 | |
|           
 | |
|           To complete key-based authentication setup:
 | |
|           1. Copy the above public key to the target system's authorized_keys
 | |
|           2. Or use ssh-copy-id command from this system:
 | |
|              ssh-copy-id -i /home/{{ target_user }}/.ssh/id_rsa.pub {{ target_user }}@{{ inventory_hostname }}          
 | |
| 
 | |
|     - name: Ensure .ssh directory exists for user
 | |
|       file:
 | |
|         path: /home/{{ target_user }}/.ssh
 | |
|         state: directory
 | |
|         owner: "{{ target_user }}"
 | |
|         group: "{{ target_user }}"
 | |
|         mode: '0700'
 | |
| 
 | |
|     - name: Configure SSH to prefer key authentication
 | |
|       lineinfile:
 | |
|         path: /etc/ssh/sshd_config
 | |
|         regexp: '^PasswordAuthentication'
 | |
|         line: 'PasswordAuthentication yes'
 | |
|         backup: yes
 | |
|       notify: restart sshd
 | |
| 
 | |
|     - name: Configure SSH to allow key authentication
 | |
|       lineinfile:
 | |
|         path: /etc/ssh/sshd_config
 | |
|         regexp: '^PubkeyAuthentication'
 | |
|         line: 'PubkeyAuthentication yes'
 | |
|         backup: yes
 | |
|       notify: restart sshd
 | |
| 
 | |
|   handlers:
 | |
|     - name: restart sshd
 | |
|       systemd:
 | |
|         name: sshd
 | |
|         state: restarted |