- 1 1. Introduzione
- 2 2. Concetti di base di SSH
- 3 3. Installare un server SSH su Ubuntu
- 4 4. Configurare le connessioni SSH
- 5 5. Esecuzione di connessioni SSH
- 6 6. Risoluzione dei problemi di connessione SSH
- 6.1 Cause comuni di errori di connessione SSH e soluzioni
- 6.2 1. Il server SSH non è in esecuzione
- 6.3 2. Il firewall (UFW) sta bloccando SSH
- 6.4 3. Il numero di porta è stato cambiato
- 6.5 4. Permessi errati della chiave SSH
- 6.6 5. Mismatch della chiave host
- 6.7 6. Controllare i log SSH
- 6.8 7. Problemi di timeout della connessione SSH
- 6.9 Riepilogo
- 7 7. Migliorare la sicurezza SSH
- 8 8. Domande Frequenti (FAQ)
- 8.1 Q1: Perché SSH mostra “Connection refused”?
- 8.2 Q2: Come cambio la porta SSH predefinita?
- 8.3 Q3: Cosa devo verificare se l’autenticazione con chiave pubblica non funziona?
- 8.4 Q4: Come consentire l’accesso SSH solo da indirizzi IP specifici?
- 8.5 Q5: Come posso cambiare il timeout della sessione SSH?
- 8.6 Riepilogo
- 9 9. Conclusione
1. Introduzione
Utilizzando SSH su Ubuntu, è possibile accedere e gestire server o PC in remoto in modo sicuro. Questo articolo fornisce una spiegazione dettagliata di SSH—dai concetti di base e come installare un server SSH su Ubuntu, alle migliori pratiche di sicurezza e alla risoluzione dei problemi—con spiegazioni chiare adatte anche ai principianti.
Che cos’è SSH?
SSH (Secure Shell) è un protocollo che consente connessioni remote sicure a computer tramite una rete. A differenza di protocolli tradizionali come Telnet o FTP, SSH cripta i dati di comunicazione, riducendo significativamente il rischio di intercettazioni e manomissioni.
Principali casi d’uso di SSH su Ubuntu
Gli scenari principali in cui SSH viene utilizzato su Ubuntu includono i seguenti:
- Gestione remota del server : Operare server Ubuntu da postazioni remote
- Trasferimento file : Scambiare file in modo sicuro usando SCP o SFTP
- Port forwarding : Stabilire connessioni remote sicure
Cosa imparerai in questo articolo
- Concetti e meccanismi di base di SSH
- Come installare un server SSH su Ubuntu
- Come configurare le connessioni SSH e risolvere gli errori
- Le migliori pratiche di sicurezza per SSH
2. Concetti di base di SSH
Per utilizzare SSH in modo efficace, è fondamentale comprendere i suoi concetti chiave. In questo capitolo spieghiamo come funziona SSH e le differenze tra i metodi di autenticazione.
Come funziona SSH
SSH è un protocollo che stabilisce una connessione sicura tra un client e un server. Per impostazione predefinita utilizza la porta TCP 22 per la comunicazione crittografata.
Caratteristiche principali
- Login remoto : Eseguire comandi su un server
- Trasferimento file : Inviare dati in modo sicuro via SCP o SFTP
- Port forwarding : Connettersi ad altri servizi tramite SSH
Metodi di autenticazione SSH
SSH offre principalmente due metodi di autenticazione:
Autenticazione con password
- Accesso con nome utente e password
- Semplice, ma vulnerabile agli attacchi di forza bruta
Autenticazione con chiave pubblica
- Autenticazione mediante coppia di chiavi pubblica/privata
- Più sicura e consigliata di default
Vantaggi di SSH
- Comunicazione crittografata : Protegge i dati trasmessi
- Gestione remota semplificata : Accesso da qualsiasi luogo
- Sicurezza potenziata : Aiuta a prevenire accessi non autorizzati
3. Installare un server SSH su Ubuntu
Per usare SSH su Ubuntu, è necessario installare il pacchetto server OpenSSH. Questo capitolo spiega come installarlo e configurarlo.
Installare il server OpenSSH
È possibile installare il server OpenSSH su Ubuntu con i seguenti comandi:
sudo apt update
sudo apt install openssh-server
Dopo l’installazione, verifica che il servizio SSH sia in esecuzione:
sudo systemctl status ssh
Avviare e gestire il servizio SSH
Per avviare o arrestare manualmente il servizio SSH, utilizza i seguenti comandi:
# Start SSH
sudo systemctl start ssh
# Enable SSH to start automatically after reboot
sudo systemctl enable ssh
# Stop SSH
sudo systemctl stop ssh
Configurare UFW (Uncomplicated Firewall)
Se UFW è abilitato, le connessioni SSH potrebbero essere bloccate. Consenti la porta SSH (22) con i comandi seguenti:
sudo ufw allow ssh
sudo ufw enable
4. Configurare le connessioni SSH
Per usare SSH in modo sicuro, è essenziale una corretta configurazione. Questo capitolo spiega come impostare l’autenticazione con chiave pubblica.
Generare una coppia di chiavi
Esegui il comando seguente sulla macchina client per generare una coppia di chiavi pubblica/privata:
ssh-keygen -t rsa -b 4096
Per impostazione predefinita, la chiave privata viene salvata in ~/.ssh/id_rsa e la chiave pubblica in ~/.ssh/id_rsa.pub.
Caricare la chiave pubblica sul server
Trasferisci la chiave pubblica generata al server SSH:
ssh-copy-id username@server-ip-address
Oppure trasferiscila manualmente:
scp ~/.ssh/id_rsa.pub username@server-ip-address:~/
Sul server, esegui i seguenti comandi per posizionare la chiave pubblica nella directory corretta:
mkdir -p ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm ~/id_rsa.pub
Modifica di sshd_config
Apri il file di configurazione SSH per migliorare le impostazioni di sicurezza:
sudo nano /etc/ssh/sshd_config
Verifica e modifica i seguenti elementi di configurazione:
# Disable password authentication (use public key only)
PasswordAuthentication no
# Disable root login
PermitRootLogin no
# Change the SSH port (example: 2222)
Port 2222
Dopo aver apportato le modifiche, riavvia il servizio SSH:
sudo systemctl restart ssh
5. Esecuzione di connessioni SSH
Una volta configurato il server SSH su Ubuntu, è possibile connettersi da una macchina client. Questo capitolo spiega l’uso base di SSH e i metodi di connessione quando la porta è cambiata.
Comando base per la connessione SSH
Usa il seguente comando per connetterti da un client SSH al server:
ssh username@server-ip-address
Ad esempio, se l’IP del server è 192.168.1.10 e il nome utente è ubuntu, digita:
ssh ubuntu@192.168.1.10
Al primo collegamento, verrà mostrata l’impronta digitale del server. Inserisci yes per accettare e procedere.
Connessione dopo aver cambiato il numero di porta
Se hai cambiato la porta SSH — ad esempio a 2222 — usa l’opzione -p:
ssh -p 2222 ubuntu@192.168.1.10
Connessione con una chiave privata
Se è configurata l’autenticazione con chiave pubblica, specifica la chiave privata usando l’opzione -i:
ssh -i ~/.ssh/id_rsa ubuntu@192.168.1.10
Esecuzione di comandi remoti via SSH
Puoi eseguire comandi direttamente sul server remoto senza accedere interattivamente:
ssh ubuntu@192.168.1.10 "ls -lah /home/ubuntu"
Questo approccio consente un’automazione efficiente e operazioni remote tramite script.
Trasferimento di file con SCP
Puoi trasferire file tra il PC locale e il server remoto usando SSH.
Local → Remote
scp filename username@server-ip-address:/remote/directory
Esempio:
scp myfile.txt ubuntu@192.168.1.10:/home/ubuntu/
Remote → Local
scp username@server-ip-address:/remote/filename /local/directory
Esempio:
scp ubuntu@192.168.1.10:/home/ubuntu/myfile.txt ./
Gestione dei file con SFTP
Puoi anche gestire i file usando SFTP:
sftp ubuntu@192.168.1.10
Una volta connesso, puoi eseguire i seguenti comandi:
ls # List files
cd # Change directory
put filename # Upload a local file to the remote server
get filename # Download a remote file to the local machine
exit # Exit the connection
6. Risoluzione dei problemi di connessione SSH
Non è raro incontrare problemi durante la connessione via SSH. Questo capitolo descrive i problemi più comuni e come risolverli.
Cause comuni di errori di connessione SSH e soluzioni
Quando una connessione SSH fallisce, la causa è tipicamente una delle seguenti:
1. Il server SSH non è in esecuzione
Prima, verifica che il server SSH sia in esecuzione correttamente:
sudo systemctl status ssh
Soluzione:
- Se il server SSH è fermo, avvialo usando il seguente comando:
sudo systemctl start ssh
- Per abilitare l’avvio automatico di SSH al riavvio, esegui:
sudo systemctl enable ssh
2. Il firewall (UFW) sta bloccando SSH
Se UFW (Uncomplicated Firewall) è abilitato, l’accesso SSH potrebbe essere bloccato:
Soluzione:
- Controlla la configurazione attuale di UFW:
sudo ufw status
- Consenti l’accesso SSH:
sudo ufw allow ssh
(Se usi una porta personalizzata, esegui sudo ufw allow <port-number>)
- Riavvia UFW:
sudo ufw reload
3. Il numero di porta è stato cambiato
Se il server SSH non utilizza la porta predefinita 22, devi specificare la porta corretta al momento della connessione:
Soluzione:
- Controlla il numero di porta sul server:
sudo grep Port /etc/ssh/sshd_config
- Specifica la porta corretta sul client:
ssh -p 2222 username@server-ip-address
4. Permessi errati della chiave SSH
Se stai usando l’autenticazione con chiave pubblica, permessi errati della chiave possono impedire la connessione.
Soluzione:
- Imposta i permessi per la chiave privata:
chmod 600 ~/.ssh/id_rsa
- Imposta i permessi per la chiave pubblica:
chmod 644 ~/.ssh/authorized_keys
5. Mismatch della chiave host
Se la chiave host SSH sul server è cambiata, il client potrebbe mostrare un errore come: “WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!”
Soluzione:
- Rimuovi la vecchia chiave host:
ssh-keygen -R <server-ip-address>
- Prova a connetterti di nuovo:
ssh username@server-ip-address
6. Controllare i log SSH
Per identificare messaggi di errore SSH dettagliati, controlla i file di log del server:
sudo journalctl -u ssh --no-pager | tail -n 20
Per monitorare i log in tempo reale, esegui:
sudo tail -f /var/log/auth.log
7. Problemi di timeout della connessione SSH
Se le connessioni SSH sono lente o si disconnettono inaspettatamente, rivedi i seguenti punti:
Soluzione:
- Abilita KeepAlive Aggiungi quanto segue al file
~/.ssh/configdel client:Host * ServerAliveInterval 60
- Regola le impostazioni di timeout sul server Aggiungi quanto segue a
/etc/ssh/sshd_confige riavvia il servizio:ClientAliveInterval 60 ClientAliveCountMax 3sudo systemctl restart ssh
Riepilogo
I problemi di connessione SSH di solito derivano dai seguenti punti. Nella maggior parte dei casi, verificare questi elementi risolve il problema:
✅ Verifica che il servizio SSH sia in esecuzione
✅ Controlla se il firewall sta bloccando la connessione
✅ Conferma che sia in uso la porta SSH corretta
✅ Assicurati che i permessi delle chiavi SSH siano impostati correttamente
✅ Rivedi i log SSH per identificare errori dettagliati

7. Migliorare la sicurezza SSH
SSH è uno strumento potente per l’accesso remoto, ma senza adeguate misure di sicurezza può diventare un bersaglio per accessi non autorizzati o attacchi brute‑force. Questo capitolo spiega le impostazioni consigliate per rafforzare la sicurezza di SSH.
1. Disabilitare l’autenticazione con password e usare l’autenticazione con chiave pubblica
Per impostazione predefinita, SSH consente l’accesso con password, il che aumenta il rischio di attacchi brute‑force. Abilita l’autenticazione con chiave pubblica e disabilita l’autenticazione con password per migliorare la sicurezza.
Passaggi
- Modifica
sshd_configsudo nano /etc/ssh/sshd_config
- Modifica o aggiungi le seguenti impostazioni
PasswordAuthentication no PubkeyAuthentication yes
- Riavvia il servizio SSH
sudo systemctl restart ssh
Dopo aver applicato questa configurazione, SSH accetterà solo l’autenticazione con chiave pubblica. Assicurati che le tue chiavi SSH siano configurate correttamente in anticipo.
2. Cambiare il numero di porta SSH
Usare la porta SSH predefinita (22) rende i server obiettivi più facili per gli attaccanti. Cambiare il numero di porta aiuta a ridurre i tentativi di accesso non autorizzati.
Passaggi
- Apri
sshd_configsudo nano /etc/ssh/sshd_config
- Modifica la seguente riga (esempio: cambia la porta a 2222)
Port 2222
- Consenti la nuova porta attraverso il firewall
sudo ufw allow 2222/tcp
- Riavvia il servizio SSH
sudo systemctl restart ssh
- Testa la connessione usando la nuova porta
ssh -p 2222 username@server-ip-address
3. Disabilitare il login root
Per impostazione predefinita, SSH consente il login root, il che rappresenta un serio rischio di sicurezza. Si raccomanda di consentire l’accesso SSH solo tramite account utente regolari e di usare sudo quando sono necessari privilegi amministrativi.
Passaggi
- Apri
sshd_configsudo nano /etc/ssh/sshd_config
- Modifica la seguente riga
PermitRootLogin no
- Riavvia il servizio SSH
sudo systemctl restart ssh
4. Prevenire gli attacchi brute‑force con Fail2Ban
Fail2Ban rileva i tentativi di login non autorizzati e blocca automaticamente gli indirizzi IP che superano un certo numero di fallimenti.
Installazione e configurazione
- Installa Fail2Ban
sudo apt install fail2ban -y
- Copia il file di configurazione predefinito
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- Modifica
jail.localsudo nano /etc/fail2ban/jail.local
- Modifica la sezione
[sshd][sshd] enabled = true maxretry = 5 bantime = 600 findtime = 600
maxretry: Numero di tentativi di accesso falliti consentitibantime: Durata del blocco IP (secondi)findtime: Finestra temporale per contare i tentativi falliti (secondi)
- Riavvia Fail2Ban
sudo systemctl restart fail2ban
- Controlla lo stato attuale di Fail2Ban
sudo fail2ban-client status sshd
Riepilogo
Per migliorare la sicurezza di SSH, applica le seguenti misure:
✅ Disabilita l’autenticazione con password e usa l’autenticazione con chiave pubblica
✅ Cambia la porta SSH per ridurre l’esposizione agli attacchi
✅ Disabilita l’accesso root per ridurre i rischi
✅ Usa Fail2Ban per prevenire attacchi brute‑force
8. Domande Frequenti (FAQ)
Questa sezione affronta le domande e i problemi più comuni che sorgono durante la configurazione e l’uso di SSH.
Q1: Perché SSH mostra “Connection refused”?
Ci sono diverse cause possibili per cui una connessione SSH viene rifiutata.
Cause principali e soluzioni:
- Il servizio SSH non è in esecuzione
sudo systemctl status ssh
Soluzione: Avvia il servizio se è fermo.
sudo systemctl start ssh
- Il firewall (UFW) sta bloccando SSH
sudo ufw allow ssh sudo ufw enable
- Il numero della porta SSH è stato cambiato Se SSH utilizza una porta personalizzata, specificala al momento della connessione.
ssh -p 2222 username@server-ip-address
Q2: Come cambio la porta SSH predefinita?
La porta 22 è un obiettivo comune di attacco, quindi cambiarla migliora la sicurezza.
Passaggi:
- Modifica il file di configurazione SSH
sudo nano /etc/ssh/sshd_config
- Modifica la direttiva
PortPort 2222
- Consenti la nuova porta attraverso il firewall
sudo ufw allow 2222/tcp
- Riavvia il servizio SSH
sudo systemctl restart ssh
Dopo aver effettuato queste modifiche, connettiti usando la nuova porta:
ssh -p 2222 username@server-ip-address
Q3: Cosa devo verificare se l’autenticazione con chiave pubblica non funziona?
Verifica quanto segue se l’autenticazione con chiave SSH fallisce:
- Assicurati che la chiave pubblica sia installata correttamente
ls -l ~/.ssh/authorized_keys
Assicurati che authorized_keys esista e contenga la chiave corretta.
- Controlla i permessi dei file
chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh
- Verifica che SSH consenta l’autenticazione con chiave pubblica
sudo nano /etc/ssh/sshd_config
Assicurati che le seguenti voci siano presenti:
PubkeyAuthentication yes
PasswordAuthentication no
- Riavvia il servizio SSH
sudo systemctl restart ssh
Q4: Come consentire l’accesso SSH solo da indirizzi IP specifici?
Limitare l’accesso SSH a indirizzi IP specifici aumenta significativamente la sicurezza.
Metodo 1: Modifica sshd_config
- Apri il file di configurazione
sudo nano /etc/ssh/sshd_config
- Aggiungi una voce
AllowUsersAllowUsers username@192.168.1.100
- Riavvia il servizio SSH
sudo systemctl restart ssh
Metodo 2: Configura il firewall (UFW)
- Consenti l’accesso da un IP specifico
sudo ufw allow from 192.168.1.100 to any port 22
- Nega l’accesso da altri
sudo ufw deny 22
Q5: Come posso cambiare il timeout della sessione SSH?
Se la tua sessione SSH si disconnette dopo essere rimasta inattiva, modifica le seguenti impostazioni.
Impostazioni lato client
- Aggiungi quanto segue a
~/.ssh/config:Host * ServerAliveInterval 60
Impostazioni lato server
- Modifica
sshd_configsudo nano /etc/ssh/sshd_config
- Aggiungi o modifica:
ClientAliveInterval 60 ClientAliveCountMax 3
- Riavvia il servizio SSH
sudo systemctl restart ssh
Riepilogo
.Questa FAQ copre i problemi e le soluzioni SSH più comuni. Quando si verifica un problema, controlla sempre i log e le impostazioni di configurazione per individuare la causa.
✅ Come risolvere i problemi di “Connection refused”
✅ Come cambiare la porta SSH predefinita e connettersi correttamente
✅ Come risolvere i fallimenti di autenticazione con chiave pubblica
✅ Come limitare l’accesso SSH a indirizzi IP specifici
✅ Come prevenire i timeout delle sessioni SSH
9. Conclusione
Questo articolo ha spiegato come configurare e utilizzare SSH su Ubuntu, dai concetti di base alle pratiche di sicurezza avanzate. Ricapitoliamo i punti chiave.
Punti Chiave
1. Nozioni di base su SSH
- SSH consente l’accesso remoto sicuro tramite comunicazione crittografata.
- Più sicuro di Telnet o FTP.
- I metodi di autenticazione includono autenticazione con password e autenticazione con chiave pubblica .
2. Installazione del server SSH
- Installa OpenSSH tramite
sudo apt install openssh-server. - Verifica lo stato del servizio con
systemctl status ssh. - Consenti l’accesso SSH tramite UFW usando
sudo ufw allow ssh.
3. Configurazione dell’accesso SSH
- Connettiti con
ssh username@server-ip-address. - Usa l’autenticazione con chiave pubblica per una maggiore sicurezza.
- Disabilita l’autenticazione con password in
sshd_configse lo desideri.
4. Risoluzione dei problemi
- Verifica se SSH è in esecuzione (
systemctl status ssh). - Specifica la porta corretta se è stata cambiata (
ssh -p 2222 username@IP). - Verifica i permessi della chiave in
~/.ssh/authorized_keys.
5. Miglioramenti della sicurezza
- Disabilita l’autenticazione con password e affidati alle chiavi pubbliche.
- Cambia la porta SSH per ridurre gli attacchi di scansione.
- Usa Fail2Ban per bloccare i tentativi di login ripetuti.
- Limita l’accesso SSH a indirizzi IP specifici, dove possibile.
Risorse di apprendimento aggiuntive
Per approfondire la tua comprensione di SSH, esplora le seguenti risorse:
📚 Documentazione ufficiale
🛠 Strumenti correlati
- PuTTY per l’accesso SSH su Windows
- Download PuTTY
- MobaXterm per funzionalità SSH avanzate
- MobaXterm Official Site
🎥 Video consigliati
- Cerca su YouTube “Ubuntu SSH setup” per trovare tutorial adatti ai principianti.
作成した動画を友だち、家族、世界中の人たちと共有…
Prossimi passi
Una volta compreso come funziona SSH, esplora usi più avanzati:
✅ Automatizza la gestione dei server usando Ansible via SSH
- Ideale per gestire più server in modo efficiente.
✅ Tunneling SSH e port forwarding
- Usa SSH per proteggere le connessioni desktop remote o creare tunnel simili a una VPN.
✅ Monitora i log SSH e migliora la sicurezza
- Usa strumenti come
fail2banelogwatchper monitorare attività sospette.
Considerazioni finali
Grazie per aver letto questa guida fino alla fine! 🎉 Configurare correttamente SSH su Ubuntu migliora notevolmente l’efficienza e la sicurezza della gestione remota.
Continuando a imparare, esplora tecniche avanzate come il tunneling sicuro e il monitoraggio proattivo per costruire sistemi ancora più robusti.
Goditi un’esperienza SSH sicura e produttiva! 🖥️🔐

