- 1 1. Introduzione
- 2 2. Configurazione di base di SSH
- 3 3. Migliorare la Sicurezza di SSH
- 4 Riepilogo
- 5 4. Configurazione avanzata di SSH
- 6 Riepilogo
- 7 5. Risoluzione dei problemi SSH
- 8 Riepilogo
- 9 6. FAQ (Domande Frequenti)
- 9.1 6.1 Come prevenire i timeout SSH?
- 9.2 6.2 Cosa fare se dimentico la password SSH?
- 9.3 6.3 Come usare SSH su Windows?
- 9.4 6.4 Come configurare SSH in Ubuntu WSL (Windows Subsystem for Linux)?
- 9.5 6.5 Quali misure di sicurezza aggiuntive dovrei adottare?
- 9.6 6.6 Come monitorare i log SSH in tempo reale?
- 9.7 6.7 Come rendere SSH più comodo?
- 10 Riepilogo
- 11 Articoli correlati
1. Introduzione
Configurare SSH su Ubuntu è fondamentale per gestire server remoti. SSH (Secure Shell) è un protocollo che fornisce comunicazioni crittografate sicure, ampiamente usato per l’accesso a server remoti, l’esecuzione di comandi e il trasferimento di file.
In questa guida copriremo tutto, dall’installazione di base alle configurazioni di sicurezza avanzate per SSH su Ubuntu.
1.1 Perché configurare SSH su Ubuntu?
1.1.1 Che cos’è SSH?
SSH (Secure Shell) è un protocollo progettato per comunicazioni sicure su una rete. È comunemente usato per accedere a server remoti, trasferire file e creare tunnel (port forwarding). A differenza di protocolli tradizionali come Telnet o FTP, SSH cripta tutte le comunicazioni, rendendole altamente sicure.
1.1.2 Quando serve SSH su Ubuntu?
SSH è utile per la gestione remota in vari scenari, come:
- Gestione di server cloud : servizi cloud come AWS, GCP e Vultr usano SSH per l’accesso remoto ai server.
- Operazioni remote in un ambiente LAN : accedere a server interni o macchine di sviluppo via SSH per lavoro remoto.
- Gestione di dispositivi IoT : controllare a distanza dispositivi embedded come Raspberry Pi.
Per impostazione predefinita, SSH è disabilitato su Ubuntu. Per usarlo, è necessario installarlo e configurarlo manualmente.
2. Configurazione di base di SSH
Per usare SSH su Ubuntu, è necessario installare il server SSH (OpenSSH) e configurarlo correttamente. Questa sezione copre l’installazione, le impostazioni di base, la configurazione del firewall e come connettersi al proprio server.
2.1 Installazione e avvio di OpenSSH
2.1.1 Che cos’è OpenSSH?
OpenSSH (Open Secure Shell) è un’implementazione open‑source del protocollo SSH. Supporta connessioni remote, trasferimenti sicuri di file (SCP e SFTP) e port forwarding.
2.1.2 Installazione di OpenSSH
Per impostazione predefinita, Ubuntu non include un server SSH pre‑installato. Usa il comando seguente per installarlo:
sudo apt update && sudo apt install -y openssh-server
Questo comando aggiorna l’elenco dei pacchetti e installa il server OpenSSH.
2.1.3 Avvio e abilitazione del server SSH
Una volta installato, avvia il server SSH e abilitalo affinché si avvii all’accensione.
sudo systemctl enable --now ssh
L’opzione enable garantisce che SSH parta automaticamente quando il sistema operativo si avvia.
2.1.4 Verifica dello stato di SSH
Per controllare se il server SSH è in esecuzione, usa:
systemctl status ssh
Se vedi un output simile al seguente, SSH è in esecuzione correttamente:
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2025-02-28 12:00:00 UTC; 5min ago
Se vedi inactive (dead) o failed, avvia il servizio manualmente:
sudo systemctl start ssh
2.2 Configurazione del firewall (UFW)
Ubuntu fornisce ufw (Uncomplicated Firewall) per una gestione semplice del firewall. È necessario configurare UFW per consentire le connessioni SSH.
2.2.1 Controllo dello stato di UFW
Verifica lo stato attuale del firewall con:
sudo ufw status
Esempio di output (se UFW è disabilitato):
Status: inactive
Esempio di output (se UFW è abilitato):
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
2.2.2 Consenti il traffico SSH
Per consentire le connessioni SSH sulla porta predefinita 22, esegui:
sudo ufw allow ssh
In alternativa, specifica esplicitamente la porta:
sudo ufw allow 22/tcp
2.2.3 Abilitazione di UFW
Se UFW è disabilitato, abilitalo con:
sudo ufw enable
Prima di abilitare UFW, assicurati che SSH sia consentito, altrimenti potresti rimanere bloccato fuori.
2.2.4 Verifica delle impostazioni di UFW
Controlla se le regole del firewall sono state applicate correttamente:
sudo ufw status verbose
Esempio di output:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
Se vedi questo, SSH è consentito attraverso il firewall.
2.3 Connessione a SSH
Una volta che il server SSH è in esecuzione, puoi connetterti da un PC client.
2.3.1 Connessione da Linux/macOS
Su Linux o macOS, apri un terminale ed esegui:
ssh username@server-ip-address
Esempio:
ssh user@192.168.1.100
Al primo collegamento, potresti vedere un avviso di sicurezza come questo:
The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)?
Digita yes e premi Invio per continuare.
2.3.2 Connessione da Windows
Su Windows, puoi usare PowerShell o PuTTY per connetterti via SSH.
Utilizzo di PowerShell
Windows 10 e versioni successive includono un client SSH in PowerShell. Connettiti con:
ssh username@server-ip-address
Utilizzo di PuTTY
- Scarica e installa PuTTY dal sito ufficiale .
- Apri PuTTY e inserisci l’indirizzo IP del server in
Host Name (or IP address). - Imposta
Connection typesuSSHe fai clic suOpen. - Inserisci il tuo nome utente e la password per connetterti.
3. Migliorare la Sicurezza di SSH
SSH è uno strumento potente per l’accesso remoto, ma lasciarlo con le impostazioni predefinite può comportare rischi di sicurezza. Gli aggressori spesso prendono di mira i server SSH usando attacchi di forza bruta o scansioni di porte. Per creare un ambiente SSH più sicuro, è fondamentale applicare configurazioni di sicurezza adeguate.
3.1 Disabilitare l’accesso root
Per impostazione predefinita, Ubuntu può consentire l’accesso root via SSH. Poiché l’account root ha privilegi di sistema completi, è un obiettivo comune per gli aggressori. Disabilitare l’accesso root e utilizzare invece un account utente normale migliora notevolmente la sicurezza.
3.1.1 Passaggi di configurazione
- Modifica il file di configurazione SSH
/etc/ssh/sshd_config.sudo nano /etc/ssh/sshd_config
- Trova la seguente riga e cambiala in
PermitRootLogin no.PermitRootLogin no
- Salva il file e riavvia il servizio SSH.
sudo systemctl restart ssh
- Verifica che l’impostazione sia stata applicata.
sudo grep PermitRootLogin /etc/ssh/sshd_config
Se l’output mostra PermitRootLogin no, l’impostazione è stata applicata con successo.
3.2 Disabilitare l’autenticazione con password e abilitare l’autenticazione con chiave pubblica
Utilizzare l’autenticazione con chiave pubblica è molto più sicuro rispetto all’affidarsi all’autenticazione con password. Con l’autenticazione a chiave pubblica, non è necessario inserire una password, riducendo il rischio di attacchi di forza bruta.
3.2.1 Generare una coppia di chiavi SSH
Sul tuo PC locale, genera una coppia di chiavi SSH:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa
Questo creerà due file:
- Chiave privata (
id_rsa) → Conserva questa sul tuo PC locale (non condividerla mai pubblicamente). - Chiave pubblica (
id_rsa.pub) → Copia questa sul server.
3.2.2 Copiare la chiave pubblica sul server
Usa il seguente comando per copiare la tua chiave pubblica sul server:
ssh-copy-id username@server-ip-address
3.2.3 Disabilitare l’autenticazione con password
Modifica il file di configurazione SSH:
sudo nano /etc/ssh/sshd_config
Trova la seguente riga e cambiala in:
PasswordAuthentication no
Riavvia SSH per applicare le modifiche:
sudo systemctl restart ssh
3.3 Limitare l’accesso SSH a utenti specifici
Per migliorare la sicurezza, puoi limitare l’accesso SSH a utenti specifici.
3.3.1 Passaggi di configurazione
- Apri il file di configurazione SSH.
sudo nano /etc/ssh/sshd_config
- Aggiungi la seguente riga, specificando gli utenti consentiti.
AllowUsers user1 user2
- Riavvia SSH per applicare le modifiche.
sudo systemctl restart ssh
3.4 Cambiare la porta SSH
La porta SSH predefinita (22) è frequentemente bersaglio degli aggressori. Cambiarla a una porta non standard può ridurre il rischio di attacchi automatizzati.
3.4.1 Passaggi di configurazione
- Apri il file di configurazione SSH.
sudo nano /etc/ssh/sshd_config
- Trova la riga seguente e cambiala con una porta personalizzata (ad es.,
2200).Port 2200
- Salva il file e riavvia SSH.
sudo systemctl restart ssh
3.4.2 Aggiornamento delle impostazioni del firewall
Dopo aver cambiato la porta SSH, consenti la nuova porta tramite UFW:
sudo ufw allow 2200/tcp
Verifica le impostazioni:
sudo ufw status
3.5 Prevenire gli attacchi brute force con Fail2Ban
Fail2Ban è uno strumento che rileva i tentativi di accesso SSH falliti e blocca temporaneamente l’indirizzo IP dell’attaccante.
3.5.1 Installazione di Fail2Ban
sudo apt install fail2ban -y
3.5.2 Creazione di un file di configurazione
Copia il file di configurazione predefinito:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Modifica il file di configurazione:
sudo nano /etc/fail2ban/jail.local
Modifica la sezione SSH come segue:
[sshd]
enabled = true
port = 2200
maxretry = 3
findtime = 600
bantime = 3600
3.5.3 Riavvio di Fail2Ban
Riavvia Fail2Ban per applicare le modifiche:
sudo systemctl restart fail2ban
3.5.4 Controllo della lista dei ban
Per verificare quali IP sono bannati:
sudo fail2ban-client status sshd
Riepilogo
In questa sezione, abbiamo trattato le principali migliorie della sicurezza SSH, includendo:
- Disabilitare l’accesso root
- Disabilitare l’autenticazione con password e abilitare l’autenticazione con chiave pubblica
- Limitare l’accesso SSH a utenti specifici
- Modificare la porta SSH
- Utilizzare Fail2Ban per bloccare gli attacchi brute force
Implementando queste misure, puoi creare un ambiente SSH più sicuro.
4. Configurazione avanzata di SSH
Dopo aver configurato la sicurezza SSH, puoi sfruttare impostazioni avanzate per migliorare usabilità e sicurezza. Questa sezione copre la gestione di ssh.socket in Ubuntu 22.10 e successive, il tunneling SSH (port forwarding), la configurazione di più porte SSH e la limitazione dell’accesso SSH a indirizzi IP specifici.
4.1 Uso di ssh.socket in Ubuntu 22.10 e successive
A partire da Ubuntu 22.10, la gestione del servizio SSH può passare da ssh.service a ssh.socket. Questo consente a SSH di avviarsi dinamicamente quando viene ricevuta una richiesta di connessione, riducendo l’uso delle risorse.
4.1.1 Verifica dello stato di ssh.socket
Per verificare se ssh.socket è abilitato, esegui:
sudo systemctl status ssh.socket
Esempio di output (se abilitato):
● ssh.socket - OpenSSH Server Socket
Loaded: loaded (/lib/systemd/system/ssh.socket; enabled; vendor preset: enabled)
Active: active (listening) since Fri 2025-02-28 12:00:00 UTC
4.1.2 Abilitare o disabilitare ssh.socket
Se ssh.socket è disabilitato, abilitalo con:
sudo systemctl enable --now ssh.socket
Per tornare al tradizionale ssh.service, disabilita ssh.socket e abilita ssh.service al suo posto:
sudo systemctl disable --now ssh.socket
sudo systemctl enable --now ssh.service
4.2 Tunneling SSH (Port Forwarding)
Il tunneling SSH consente la trasmissione sicura dei dati tra un server remoto e un PC locale, aggirando le reti esterne.
4.2.1 Port forwarding locale
Utile per accedere in modo sicuro a database remoti o server web.
Esempio: Connessione a un server MySQL remoto (porta 3306) dal tuo PC locale
ssh -L 3306:localhost:3306 username@server-ip-address
4.2.2 Port forwarding remoto
Espone un servizio locale a un server remoto tramite SSH.
Esempio: Forwarding di un server web locale (porta 80) alla porta 8080 su un server remoto
ssh -R 8080:localhost:80 username@server-ip-address
4.2.3 Port forwarding dinamico
Trasforma SSH in un proxy SOCKS per la navigazione web anonima.
Esempio: Creazione di un proxy SOCKS sulla porta locale 1080
ssh -D 1080 username@server-ip-address
4.3 Ascolto su più porte SSH
Per impostazione predefinita, SSH ascolta su una sola porta (porta 22). Configurare più porte consente maggiore flessibilità di accesso.
4.3.1 Passaggi di configurazione
- Modifica il file di configurazione SSH.
sudo nano /etc/ssh/sshd_config
- Aggiungi più voci di porta.
Port 22 Port 2200
- Riavvia SSH.
sudo systemctl restart ssh
- Consenti la nuova porta nel firewall.
sudo ufw allow 2200/tcp
4.4 Limitare l’accesso SSH a indirizzi IP specifici
Per migliorare la sicurezza, è possibile limitare l’accesso SSH a indirizzi IP specifici.
4.4.1 Configurazione di /etc/hosts.allow
Consenti l’accesso SSH solo da determinati indirizzi IP modificando:
sudo nano /etc/hosts.allow
Aggiungi la seguente riga (sostituisci 192.168.1.100 con l’indirizzo IP consentito):
sshd: 192.168.1.100
4.4.2 Configurazione di /etc/hosts.deny
Per bloccare tutti gli altri IP per impostazione predefinita:
sudo nano /etc/hosts.deny
sshd: ALL
Ciò garantisce che solo gli IP elencati in hosts.allow possano accedere a SSH.
Riepilogo
Questa sezione ha trattato impostazioni SSH avanzate, includendo:
- Gestione di
ssh.socketin Ubuntu 22.10 e successive - Utilizzo del tunneling SSH (port forwarding) per connessioni sicure
- Ascolto su più porte SSH
- Limitare l’accesso SSH a IP specifici
Applicare queste impostazioni migliora la sicurezza e l’usabilità di SSH.
5. Risoluzione dei problemi SSH
Anche con una configurazione corretta, possono verificarsi problemi SSH. Questa sezione fornisce soluzioni ai problemi SSH più comuni.
5.1 Impossibile connettersi a SSH
Se ricevi un errore Connection refused o di timeout, verifica quanto segue.
5.1.1 Il servizio SSH non è in esecuzione
Verifica lo stato del servizio SSH:
sudo systemctl status ssh
Soluzione:
- Se
Active: inactive (dead)ofailed, riavvia SSH.sudo systemctl restart ssh
- Abilita l’avvio automatico di SSH.
sudo systemctl enable ssh
5.1.2 Il firewall blocca SSH
Assicurati che SSH sia consentito tramite UFW:
sudo ufw status
Soluzione: Se SSH non è consentito:
sudo ufw allow 22/tcp
Se utilizzi una porta personalizzata:
sudo ufw allow 2200/tcp
5.2 Errori di autenticazione
Se SSH rifiuta i tentativi di accesso, verifica quanto segue:
5.2.1 Nome utente o password errati
Assicurati di utilizzare il nome utente corretto:
ssh username@server-ip-address
5.2.2 Problemi con l’autenticazione a chiave pubblica
Verifica che la tua chiave pubblica sia correttamente memorizzata in ~/.ssh/authorized_keys.
cat ~/.ssh/authorized_keys
5.2.3 Permessi errati
Assicurati che la directory e i file SSH abbiano i permessi corretti:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Riepilogo
Questa sezione ha trattato i problemi SSH comuni e le loro soluzioni, includendo:
- Verifica se SSH è in esecuzione
- Assicurarsi che il firewall non blocchi SSH
- Risoluzione dei problemi di autenticazione
Utilizza questi passaggi di risoluzione per risolvere rapidamente i problemi di connessione SSH.
6. FAQ (Domande Frequenti)
Questa sezione affronta le domande comuni relative a SSH e le soluzioni per migliorare la tua esperienza SSH mantenendo la sicurezza.
6.1 Come prevenire i timeout SSH?
Se le connessioni SSH si disconnettono dopo un periodo di inattività, prova le seguenti impostazioni.
6.1.1 Configurazione lato server
Modifica /etc/ssh/sshd_config e aggiungi:
ClientAliveInterval 60
ClientAliveCountMax 3
Riavvia SSH per applicare le modifiche:
sudo systemctl restart ssh
6.1.2 Configurazione lato client
Modifica il file di configurazione SSH locale ~/.ssh/config:
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
6.2 Cosa fare se dimentico la password SSH?
6.2.1 Se hai accesso fisico al server
- Avvia in modalità di ripristino tramite il menu GRUB.
- Reimposta la password con il seguente comando:
passwd username
- Riavvia il sistema.
6.2.2 Se non puoi accedere fisicamente al server (es. VPS cloud)
- Usa la console fornita dal provider cloud per accedere al server.
- Configura l’autenticazione a chiave SSH invece di fare affidamento sulle password.
6.3 Come usare SSH su Windows?
6.3.1 Uso di PowerShell
Windows 10 e versioni successive includono un client SSH integrato. Apri PowerShell ed esegui:
ssh username@server-ip-address
6.3.2 Uso di PuTTY
- Scarica e installa PuTTY .
- Inserisci l’IP del server in
Host Name (or IP address). - Seleziona
SSHcome tipo di connessione e fai clic suOpen. - Accedi con il tuo nome utente e password.
6.4 Come configurare SSH in Ubuntu WSL (Windows Subsystem for Linux)?
Per abilitare SSH su WSL, segui questi passaggi.
6.4.1 Installazione del server SSH
sudo apt update && sudo apt install openssh-server
6.4.2 Configurazione di SSH
Modifica /etc/ssh/sshd_config e abilita l’autenticazione con password:
PasswordAuthentication yes
Poiché WSL non utilizza systemd per impostazione predefinita, avvia SSH manualmente:
sudo service ssh start
6.5 Quali misure di sicurezza aggiuntive dovrei adottare?
6.5.1 Installazione di Fail2Ban
Previeni gli attacchi brute‑force installando Fail2Ban:
sudo apt install fail2ban -y
Modifica il file di configurazione /etc/fail2ban/jail.local:
[sshd]
enabled = true
port = 22
maxretry = 3
findtime = 600
bantime = 3600
Riavvia Fail2Ban:
sudo systemctl restart fail2ban
6.5.2 Modifica della porta SSH
Modifica /etc/ssh/sshd_config per cambiare la porta SSH predefinita:
Port 2200
Riavvia SSH e aggiorna le impostazioni del firewall:
sudo ufw allow 2200/tcp
6.6 Come monitorare i log SSH in tempo reale?
Per visualizzare i log SSH in tempo reale, usa:
sudo journalctl -u ssh -f
Per controllare i log precedenti:
sudo cat /var/log/auth.log | grep ssh
6.7 Come rendere SSH più comodo?
6.7.1 Utilizzare .ssh/config per un accesso facile
Salva le connessioni SSH usate frequentemente in ~/.ssh/config:
Host myserver
HostName 192.168.1.100
User user
Port 2200
IdentityFile ~/.ssh/id_rsa
Ora puoi connetterti con:
ssh myserver
6.7.2 Utilizzare ssh-agent per evitare l’inserimento ripetuto della password
Esegui:
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
Questo consente connessioni SSH senza inserire la passphrase ogni volta.
Riepilogo
Questa sezione ha fornito risposte alle domande più comuni su SSH, coprendo:
- Prevenire i timeout SSH
- Recuperare da una password dimenticata
- Usare SSH su Windows e WSL
- Applicare misure di sicurezza aggiuntive
- Monitorare i log SSH
- Rendere l’uso di SSH più comodo
Seguendo questi consigli, puoi creare un ambiente SSH sicuro ed efficiente per la gestione remota dei server.
Articoli correlati
1. Introduzione Utilizzando SSH su Ubuntu, è possibile accedere e gestire in modo sicuro il proprio server o PC da remot[…]



![Come verificare, modificare e cambiare le versioni di Python su Ubuntu [Guida completa]](https://www.linux.digibeatrix.com/wp-content/uploads/2025/02/36b84d2ec91b0993972a29a44e5757c7-375x214.webp)
![Come verificare la versione di CUDA su Ubuntu [Guida facile ai comandi]](https://www.linux.digibeatrix.com/wp-content/uploads/2025/03/7ad0e7fe124605dc3cd746565dc1d108-375x214.webp)