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
- OpenSSH server, documentazione di Ubuntu Server
- Bug Launchpad 2069041: cambiare Port richiede daemon-reload
- ufw(8), manuale di Ubuntu
- sshd_config(5), manuale OpenBSD