---
title: "Installare e configurare SSH su Ubuntu in sicurezza"
description: "Come installare OpenSSH su Ubuntu, generare chiavi Ed25519, disattivare l'accesso root e le password, e proteggere il server dagli attacchi automatici."
url: "https://www.alemasone.com/it/configurare-ssh-ubuntu/"
language: "it"
published: 2024-12-02
updated: 2026-09-19
categories: ["Sicurezza E Privacy"]
translations:
  en: "https://www.alemasone.com/en/securely-install-configure-ssh-ubuntu/"
  es: "https://www.alemasone.com/es/instalar-configurar-ssh-ubuntu-seguro/"
  fr: "https://www.alemasone.com/fr/installer-configurer-ssh-ubuntu-securite/"
  pt: "https://www.alemasone.com/pt/configurar-ssh-ubuntu-seguranca/"
  de: "https://www.alemasone.com/de/ssh-ubuntu-sicher-installieren-konfigurieren/"
---

# Installare e configurare SSH su Ubuntu in sicurezza

Un server SSH raggiungibile da internet riceve tentativi di accesso automatici pochi minuti dopo l'accensione. Due impostazioni tolgono quasi tutto il rischio: **accesso solo con chiavi** e **login di root disattivato**. Ci vogliono cinque minuti, e vanno fatte prima di qualsiasi altra cosa.

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

```bash
sudo apt update
sudo apt install openssh-server
```

Il servizio parte da solo. Controlla lo stato:

```bash
sudo systemctl status ssh
```

![Terminale Ubuntu con l'esito di systemctl status ssh e il servizio contrassegnato come active running](systemctl-status-ssh-ubuntu.png "La riga da controllare è quella con active (running)")

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:

```bash
sudo ufw allow OpenSSH
sudo ufw enable
```

> **Non attivare UFW prima di aver consentito [OpenSSH](https://www.openssh.com/).** La connessione in corso si chiude e resti chiuso fuori. Su un server remoto a cui non puoi mettere mano fisicamente, è l'errore che costa di più.

Da un altro computer ti colleghi con:

```bash
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:

```bash
ssh-keygen -t ed25519 -C "il-mio-portatile"
```

![Terminale con ssh-keygen -t ed25519: frase di accesso, percorso dei due file e impronta della chiave](ssh-keygen-ed25519-ubuntu.png "Il comando crea due file: la chiave privata e quella pubblica con estensione .pub")

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

```bash
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:

```bash
sudo nano /etc/ssh/sshd_config.d/99-sicurezza.conf
```

Contenuto consigliato:

```text
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:

```bash
sudo sshd -t
```

Se non stampa niente è tutto a posto, e puoi ricaricare il servizio:

```bash
sudo systemctl reload ssh
```

> **Tieni aperta la sessione attuale** mentre applichi le modifiche, e prova il nuovo accesso da un'altra finestra. Se hai sbagliato qualcosa, hai ancora una connessione viva da cui rimediare.

## 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](https://github.com/fail2ban/fail2ban)** blocca per un po' gli indirizzi che sbagliano più volte di fila:

```bash
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:

```text
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

```bash
scp documento.pdf server-casa:/home/alessandro/
```

Per cartelle intere e copie che ripeti spesso usa `rsync`, che trasferisce solo quello che è cambiato:

```bash
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](/it/vpn-self-hosted/) 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`.
