Installare e configurare SSH su Ubuntu in sicurezza
Come installare OpenSSH su Ubuntu, generare chiavi Ed25519, disattivare l'accesso root e le password, e proteggere il server dagli attacchi automatici.

In questa pagina
SSH è il canale cifrato con cui si amministra un computer Linux a distanza: terminale, trasferimento di file, tunnel per altri servizi. Su Ubuntu Desktop il server SSH non è installato di serie, mentre sulle immagini per server di solito c’è già. In questa guida lo installi, lo colleghi dal tuo computer con una chiave e lo metti in sicurezza.
Installazione #
sudo apt update
sudo apt install openssh-server
Il servizio parte da solo. Controlla lo stato:
sudo systemctl status ssh

Su Ubuntu 24.04 non spaventarti se, prima del primo collegamento, lo stato risulta inactive con la riga TriggeredBy: ssh.socket: da Ubuntu 22.10 SSH viene avviato dal socket al primo tentativo di connessione, e sudo systemctl status ssh.socket deve risultare attivo. Per spegnere del tutto l’accesso remoto, per esempio durante una manutenzione, usa sudo systemctl disable --now ssh.socket ssh.
Se il firewall UFW è attivo, autorizza SSH prima di chiudere la sessione in cui stai lavorando:
sudo ufw allow OpenSSH
sudo ufw enable
Da un altro computer ti colleghi con:
ssh nomeutente@indirizzo-ip
Il comando funziona allo stesso modo da Linux, da macOS e da Windows 10 e 11, che hanno il client SSH già installato: basta aprire il Terminale di Windows o PowerShell. Al primo collegamento ti viene chiesto di confermare l’impronta del server: scrivi yes.
Le chiavi: come funzionano #
Una coppia di chiavi ha una parte privata, che resta sul tuo computer e non va data a nessuno, e una parte pubblica, che copi sul server. Quando ti colleghi il server verifica che tu abbia la chiave privata giusta, senza che nulla di segreto passi sulla rete.
È più sicuro di una password perché una chiave non si indovina: gli attacchi a forza bruta, che provano milioni di combinazioni, non servono a niente.
Generare la coppia di chiavi #
Sul tuo computer, non sul server:
ssh-keygen -t ed25519 -C "il-mio-portatile"

Ed25519 è l’algoritmo consigliato oggi: chiavi corte, verifica veloce, sicurezza alta. RSA usalo solo se devi collegarti a sistemi vecchi che non conoscono Ed25519, e in quel caso con almeno 4096 bit.
Quando ti chiede una frase di accesso (passphrase), mettila: protegge la chiave se qualcuno mette le mani sul tuo computer. Per non doverla scrivere ogni volta ci pensa l’agente SSH, che la ricorda fino alla fine della sessione.
Copiare la chiave pubblica sul server #
ssh-copy-id nomeutente@indirizzo-ip
Ti chiede la password una volta sola e imposta i permessi giusti. Su Windows ssh-copy-id non c’è: apri il file C:\Users\<nome>\.ssh\id_ed25519.pub, copiane il contenuto e incollalo in fondo al file ~/.ssh/authorized_keys sul server.
Prova subito il collegamento con la chiave da una seconda finestra, tenendo aperta la prima. Solo quando funziona passi a bloccare le password.
Mettere in sicurezza la configurazione #
Le impostazioni del server stanno in /etc/ssh/sshd_config. Sulle versioni recenti di Ubuntu è meglio non toccare quel file e creare invece un file tuo dentro /etc/ssh/sshd_config.d/, che viene letto in aggiunta:
sudo nano /etc/ssh/sshd_config.d/99-sicurezza.conf
Contenuto consigliato:
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
X11Forwarding no
MaxAuthTries 3
Cosa fa ogni riga:
| Impostazione | Effetto |
|---|---|
PermitRootLogin no | Nessuno può entrare direttamente come root: entri con il tuo utente e usi sudo |
PasswordAuthentication no | Si entra solo con le chiavi, le password vengono rifiutate |
KbdInteractiveAuthentication no | Chiude un’altra strada che riaprirebbe l’accesso con password |
MaxAuthTries 3 | Limita i tentativi per ogni connessione |
X11Forwarding no | Disattiva l’inoltro della grafica, che non usa quasi nessuno |
Prima di applicare controlla che la sintassi sia giusta:
sudo sshd -t
Se non stampa niente è tutto a posto, e puoi ricaricare il servizio:
sudo systemctl reload ssh
Difendersi dagli attacchi automatici #
Cambiare la porta da 22 a un numero alto non rende il server più sicuro, però riduce moltissimo il rumore nei log, perché quasi tutte le scansioni automatiche provano solo la porta standard. Si imposta con Port 2222 nel tuo file di configurazione, ricordandoti di aprire la nuova porta sul firewall (sudo ufw allow 2222/tcp). Da Ubuntu 22.10 in poi, 24.04 compresa, dopo la modifica servono anche sudo systemctl daemon-reload e sudo systemctl restart ssh.socket, altrimenti il server continua ad ascoltare sulla 22.
Fail2ban blocca per un po’ gli indirizzi che sbagliano più volte di fila:
sudo apt install fail2ban
Con la configurazione predefinita protegge già SSH. Gli indirizzi bloccati li vedi con sudo fail2ban-client status sshd.
Limitare gli utenti che possono entrare è semplice ed efficace: con AllowUsers nomeutente nella configurazione nessun altro account può collegarsi, nemmeno con credenziali valide.
Il file di configurazione del client #
Sul computer da cui ti colleghi, il file ~/.ssh/config ti evita di ricordare indirizzi e porte:
Host server-casa
HostName 192.168.1.50
User alessandro
Port 2222
IdentityFile ~/.ssh/id_ed25519
Da quel momento basta ssh server-casa. Il nome funziona anche con scp e rsync.
Trasferire file #
scp documento.pdf server-casa:/home/alessandro/
Per cartelle intere e copie che ripeti spesso usa rsync, che trasferisce solo quello che è cambiato:
rsync -avz --progress cartella/ server-casa:/percorso/di/destinazione/
Se preferisci un programma con le finestre, FileZilla e WinSCP si collegano in SFTP usando le stesse credenziali e la stessa chiave.
Domande frequenti #
Se disattivo le password e perdo la chiave privata, resto fuori? #
Sì, ed è il rischio da gestire prima. Due precauzioni: aggiungi sul server le chiavi pubbliche di tutti i dispositivi da cui ti collegherai, e tieni una copia della chiave privata in un posto sicuro, per esempio nel tuo gestore di password. Se il server è una macchina virtuale presso un provider, di solito c’è anche una console di emergenza nel pannello web.
Ed25519 o RSA? #
Ed25519 quando puoi: è più moderno, le chiavi sono più corte e la verifica più veloce. RSA a 4096 bit solo con sistemi vecchi che non supportano Ed25519.
Cambiare porta serve a qualcosa? #
Non aumenta la sicurezza, perché una scansione mirata trova il servizio comunque. Però riduce di molto i tentativi automatici e rende i log leggibili: quando compare un tentativo, sai che merita attenzione.
Come mi collego se l’indirizzo IP di casa cambia? #
Con un servizio di DNS dinamico, che associa un nome fisso al tuo indirizzo e lo aggiorna da solo quando cambia. Molti router lo supportano già dalle impostazioni. In alternativa una VPN come Tailscale ti fa raggiungere il server senza aprire porte sul router.
Cosa vuol dire l’avviso sulla chiave dell’host cambiata? #
Che l’identità del server non corrisponde a quella salvata al primo collegamento. Può essere normale, se hai reinstallato il sistema o cambiato macchina, oppure il segnale di qualcuno che cerca di intercettare la connessione. Prima di andare avanti capisci il motivo; solo dopo rimuovi la vecchia voce con ssh-keygen -R indirizzo-ip.

