Come abilitare SSH su Ubuntu

Esegui sudo apt update, poi sudo apt install openssh-server, poi sudo systemctl enable --now ssh. Se ufw è attivo, esegui anche sudo ufw allow OpenSSH. Controlla con ss -tln | grep ':22', poi collegati da un'altra macchina con ssh user@server.

Aggiornata il . Comandi eseguiti in container usa e getta con systemd: Ubuntu 24.04 (OpenSSH 9.6) e Ubuntu 26.04 (OpenSSH 10.2).

Installa e avvia il server

sudo apt update
sudo apt install openssh-server
sudo systemctl enable --now ssh

Su un normale sistema Ubuntu il pacchetto si mette in ascolto appena installato. L'ultimo comando non fa danni se lo fa già, e rende esplicita la configurazione.

Controlla che sia in ascolto

ss -tln | grep ':22'

Dovresti vedere una riga per 0.0.0.0:22 e una per [::]:22. Per trovare l'indirizzo a cui collegarti, esegui:

hostname -I

Perché ssh.service può risultare inactive mentre SSH funziona

Da Ubuntu 22.10, comprese la 24.04 e la 26.04, una unit chiamata ssh.socket tiene la porta 22 per impostazione predefinita e avvia ssh.service alla prima connessione. Quindi subito dopo l'installazione, o dopo sudo systemctl stop ssh, puoi vedere questo e riuscire comunque a collegarti:

systemctl is-active ssh.socket    # active
systemctl is-active ssh           # inactive until the first connection

È normale. Se fermi il servizio mentre il socket è attivo, systemd ti avvisa che la unit che lo attiva è ancora attiva, e la connessione successiva lo riavvia. Per fermare davvero SSH, ferma entrambi:

sudo systemctl disable --now ssh ssh.socket

Se preferisci il comportamento più vecchio, in cui sshd gira sempre e legge la porta a ogni riavvio, disattiva il socket:

sudo systemctl disable --now ssh.socket
sudo systemctl enable --now ssh

Debian fa l'opposto per impostazione predefinita: su Debian 13, ssh.service è abilitato e ssh.socket è disabilitato. Anche Ubuntu 22.04 usa il semplice servizio.

Apri il firewall

ufw è disattivato per impostazione predefinita nella maggior parte delle installazioni. Controllalo prima:

sudo ufw status

Se dice Status: active, consenti SSH:

sudo ufw allow OpenSSH

Se dice inactive e vuoi attivarlo, aggiungi prima la regola e abilitalo dopo. L'ordine conta, vedi come consentire SSH in ufw. Un server cloud di solito ha un secondo firewall nel pannello del provider, che si apre da lì.

Prova il login

Da un'altra macchina:

ssh user@server

La prima connessione mostra il fingerprint del server e ti chiede di confermare. Se la connessione fallisce, queste guide coprono i messaggi più comuni: Connection refused e Connection timed out.

Cos'è quell'impronta e dove viene salvata lo spiega known_hosts e impronte dei server spiegati.

Cambiare la configurazione

Le impostazioni sono in /etc/ssh/sshd_config e nei file sotto /etc/ssh/sshd_config.d/. Un file in quella cartella ha la precedenza sul file principale, e alcune immagini ne contengono uno che imposta l'accesso con password, quindi controlla cosa è davvero in vigore:

sudo sshd -T | grep -i -E '^(port|passwordauthentication) '

Dopo una modifica, controlla la sintassi, poi riavvia:

sudo sshd -t
sudo systemctl restart ssh

Una nuova porta o un nuovo indirizzo di ascolto sono un caso diverso, perché va ricostruito anche il socket. Vedi come cambiare la porta SSH.

Poi, procurati una chiave al posto della password: genera una chiave, poi disattiva l'accesso con password.

Domande

SSH è installato su Ubuntu per impostazione predefinita?

Il client di solito sì. Il server dipende da come è stato installato il sistema: Ubuntu Desktop non lo include, e l'installer Server lo chiede. Esegui dpkg -l openssh-server per controllare.

Che differenza c'è tra ssh e sshd su Ubuntu?

sshd è il programma server. Su Ubuntu la sua unit systemd si chiama ssh, e sshd è un alias creato quando abiliti la unit, quindi nei comandi usa ssh.

Fonti

Altro in SSH su ogni sistema

Tutte le guide