Ansible Tutorial · 6 min read · Nov 16, 2025

Impostare un Nuovo Utente e Autenticazione SSH Key. utilizzando Ansible su Ubuntu 18.04

Ansible è uno strumento di automazione semplice che automatizza il deployment delle applicazioni software, il provisioning del cloud e la gestione della configurazione. È uno strumento di orchestrazione dei server che ti aiuta a gestire e controllare un gran numero di nodi server da un unico luogo chiamato ‘Macchine di Controllo’. Ansible è stato creato da Michael DeHaan nel 2012 ed è scritto in Python e Powershell.

In questo tutorial, impareremo come distribuire un nuovo utente e abilitare l’autenticazione basata su chiave SSH utilizzando lo strumento di automazione Ansible. Impareremo anche come configurare la ‘Macchina di Controllo’ di Ansible, così come come scrivere un semplice playbook di ansible.

Prerequisiti

  • 2 o più server Ubuntu 18.04 - 10.0.15.10 control-machine
  • 10.0.15.21 ansi01
  • 10.0.15.22 ansi02
  • Privilegi di root

Cosa faremo?

  1. Impostare la Macchina di Controllo Ansible
  2. Definire Utente e Chiave SSH
  3. Creare il File di Inventario
  4. Creare il Playbook di Ansible
  5. Distribuire il Server Utilizzando il Playbook
  6. Testare

Passo 1 - Impostare la Macchina di Controllo Ansible

In questo tutorial, utilizzeremo i server Ubuntu 16.04 come ‘Macchina di Controllo’ di Ansible e host ansible. Il primo passo che dobbiamo fare è impostare la ‘macchina di controllo’.

Installeremo python e ansible sulla ‘macchina di controllo’ ansible eseguendo il seguente comando.

sudo apt install python ansible -y

Impostare la Macchina di Controllo Ansible

Dopo che l’installazione è completata, aggiungeremo un nuovo utente di sistema.

Aggiungeremo un nuovo utente chiamato ‘provision’ per eseguire il provisioning del server utilizzando Ansible.

Aggiungi il nuovo utente ‘provision’ e dai all’utente una password.

useradd -m -s /bin/bash provision  
passwd provision

Ora aggiungi l’utente ‘provision’ per sudo senza password creando un nuovo file di configurazione sotto ‘/etc/sudoers.d/‘ utilizzando il comando qui sotto.

echo  -e 'provision\tALL=(ALL)\tNOPASSWD:\tALL' > /etc/sudoers.d/provision

Un nuovo utente è stato creato, e ora può utilizzare sudo senza una password.

Aggiungi utente

Passo 2 - Definire Utente e Chiave SSH

In questo passo, definiremo l’utente per gli host ansible. Questo utente sarà creato automaticamente da ansible, quindi dobbiamo solo definire il nome utente, la password e la chiave pubblica ssh.

Per ciascun server (‘ansi01’ e ‘ansi02’), creeremo un nuovo utente chiamato ‘provision’ con password ‘secret01’. E dobbiamo crittografare la password ‘secret01’ utilizzando il comando mkpasswd.

Crittografa la password ‘secret01’ utilizzando il comando qui sotto.

mkpasswd --method=SHA-512  
DIGITA LA PASSWORD 'secret01'

Nota:

Assicurati che il pacchetto ‘whois’ sia installato sul sistema, oppure puoi installarlo utilizzando il seguente comando.

sudo apt install whois -y

E otterrai la password crittografata SHA-512.

Successivamente, genereremo una nuova chiave ssh.

Accedi all’utente ‘provision’ e genera la chiave ssh utilizzando il comando ssh-keygen.

su - provision  
ssh-keygen -t rsa

Ora l’utente e la password sono stati definiti, e la chiave ssh è stata creata (situata nella directory ‘.ssh’).

utente e password sono stati definiti

Passo 3 - Creare Nuovo Inventario

In questo passo, definiremo i file di inventario per tutti gli host server.

Accedi come utente ‘provision’ e crea una nuova directory per il progetto.

su - provision  
mkdir -p ansible01/

Vai nella directory ‘ansible01’ e crea un nuovo file di inventario ‘inventory.ini’ utilizzando vim.

cd ansible01/  
vim inventory.ini

Incolla la seguente configurazione lì.

[webserver]  
 ansi01 ansible_host=10.0.15.21  
 ansi02 ansible_host=10.0.15.22

Salva e esci.

Ora crea un nuovo file di configurazione ansible ‘ansible.cfg’.

vim ansible.cfg

Incolla la seguente configurazione lì.

[defaults]  
 inventory = /home/provision/ansible01/inventory.ini

Salva e esci.

Creare Nuovo Inventario

Il file di inventario ansible è stato creato, e i nostri script ansible saranno situati sotto l’utente ‘provision’, all’interno della directory ‘ansible01’.

Passo 4 - Creare il Playbook di Ansible

Il Playbook di Ansible è un insieme di istruzioni che invii per essere eseguite su un singolo o gruppo di host server. Rappresenta il provisioning di ansible, dove l’automazione è definita come compiti, e tutti i lavori come l’installazione di pacchetti, la modifica di file, saranno eseguiti dai moduli ansible.

In questo passo, creeremo un nuovo playbook di ansible per distribuire un nuovo utente, distribuire la chiave ssh e configurare il servizio ssh.

Prima di creare un nuovo playbook di ansible, scanneremo tutte le impronte digitali dei server utilizzando il comando ssh-keyscan come sotto.

ssh-keyscan 10.0.15.21 >> ~/.ssh/known_hosts  
ssh-keyscan 10.0.15.22 >> ~/.ssh/known_hosts

Queste impronte digitali dei server saranno memorizzate nel file ‘.ssh/known_hosts’.

Creare il Playbook di Ansible

Nota:

Se hai molti nodi server, puoi salvare la tua lista di host e poi scansionare manualmente l’impronta digitale della chiave ssh utilizzando uno script bash come mostrato qui sotto.

for i in $(cat list-hosts.txt)  
do  
ssh-keyscan $i >> ~/.ssh/known_hosts  
done

Successivamente, crea il playbook di ansible chiamato ‘deploy-ssh.yml’ utilizzando vim.

vim deploy-ssh.yml

Incolla il seguente playbook di ansible lì.

---  
 - hosts: all  
   vars:  
     - provision_password: '$6$w9S3t7x1kRtmG0u$6nVU9KZsC12Q8DYI4FtgKPy.e/cq/jseB/.DViTO1SpUnoCy.dxcOf8hyfitGq5V0yhgXccxzlqm2o.I3SlDJ0'  
  gather_facts: no  
   remote_user: root  
   
   tasks:  
   
   - name: Aggiungi un nuovo utente chiamato provision  
     user:  
          name=provision  
          password={{ provision_password }}  
   
   - name: Aggiungi l'utente provision ai sudoers  
     copy:  
          dest: "/etc/sudoers.d/provision"  
          content: "provision  ALL=(ALL)  NOPASSWD: ALL"  
   
   - name: Distribuisci la Chiave SSH  
     authorized_key: user=provision  
                     key="{{ lookup('file', '/home/provision/.ssh/id_rsa.pub') }}"  
                     state=present  
   
   - name: Disabilita l'Autenticazione con Password  
     lineinfile:  
           dest=/etc/ssh/sshd_config  
           regexp='^PasswordAuthentication'  
           line="PasswordAuthentication no"  
           state=present  
           backup=yes  
     notify:  
       - riavvia ssh  
   
   - name: Disabilita il Login come Root  
     lineinfile:  
           dest=/etc/ssh/sshd_config  
           regexp='^PermitRootLogin'  
           line="PermitRootLogin no"  
           state=present  
           backup=yes  
     notify:  
       - riavvia ssh  
   
   handlers:  
   - name: riavvia ssh  
     service:  
       name=sshd  
       state=restarted

Salva e esci.

Nel script del playbook:

  • creiamo lo script del playbook ‘deploy-ssh.yml’ da applicare su tutti i server definiti nel file ‘inventory.ini’.
  • creiamo la variabile ansible ‘provision_password’, contenente la password crittografata per il nuovo utente.
  • Imposta i fatti di Ansible su ‘no’.
  • Definisci l’utente ‘root’ come utente remoto per eseguire l’automazione dei compiti.
  • Creiamo nuovi compiti per aggiungere un nuovo utente, aggiungere l’utente ai sudoers e caricare la chiave ssh.
  • Creiamo nuovi compiti per configurare i servizi ssh, disabilitare il login come root e disabilitare l’autenticazione con password. I compiti per configurare l’ssh attiveranno i gestori ‘riavvia ssh’.
  • Creiamo un gestore per riavviare il servizio ssh.

Passo 5 - Eseguire il Playbook

Accedi come utente ‘provision’ e vai nella directory ‘ansible01’.

su - provision  
cd ansible01/

Ora esegui il playbook ‘deploy-ssh.yml’ utilizzando il comando come mostrato qui sotto.

ansible-playbook deploy-ssh.yml --ask-pass

Digita la tua password di root, e otterrai il risultato come sotto.

Esegui il Playbook

Tutti i compiti per distribuire un nuovo utente e chiave ssh sono stati completati con successo.

Passo 6 - Test

Testa utilizzando il comando ansible.

ansible webserver -m ping  
ansible webserver -m shell -a id

Ora otterrai i messaggi verdi come sotto.

Testare Ansible

Ora possiamo gestire quei server ‘ansi01’ e ‘ansi02’ utilizzando Ansible, e l’utente ‘provision’ sarà l’utente predefinito per Ansible.

Testando la connessione ai server

ssh 10.0.15.21  
ssh 10.0.15.22

E sarai connesso a ciascun server utilizzando la chiave predefinita ‘.ssh/id_rsa’ e utilizzando l’utente ‘provision’.

Test connessione server

Un altro test

Distribuire un nuovo utente e chiave ssh utilizzando ansible è stato completato con successo.

Riferimenti

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.