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?
- Impostare la Macchina di Controllo Ansible
- Definire Utente e Chiave SSH
- Creare il File di Inventario
- Creare il Playbook di Ansible
- Distribuire il Server Utilizzando il Playbook
- 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
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 provisionOra 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/provisionUn nuovo utente è stato creato, e ora può utilizzare sudo senza una password.

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 -yE 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 rsaOra l’utente e la password sono stati definiti, e la chiave ssh è stata creata (situata nella directory ‘.ssh’).

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.iniIncolla la seguente configurazione lì.
[webserver]
ansi01 ansible_host=10.0.15.21
ansi02 ansible_host=10.0.15.22Salva e esci.
Ora crea un nuovo file di configurazione ansible ‘ansible.cfg’.
vim ansible.cfgIncolla la seguente configurazione lì.
[defaults]
inventory = /home/provision/ansible01/inventory.iniSalva e esci.

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_hostsQueste impronte digitali dei server saranno memorizzate nel file ‘.ssh/known_hosts’.

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
doneSuccessivamente, crea il playbook di ansible chiamato ‘deploy-ssh.yml’ utilizzando vim.
vim deploy-ssh.ymlIncolla 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=restartedSalva 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-passDigita la tua password di root, e otterrai il risultato come sotto.

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 idOra otterrai i messaggi verdi come sotto.

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.22E sarai connesso a ciascun server utilizzando la chiave predefinita ‘.ssh/id_rsa’ e utilizzando l’utente ‘provision’.


Distribuire un nuovo utente e chiave ssh utilizzando ansible è stato completato con successo.
Riferimenti
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.