Guida definitiva alla configurazione SSH per Ubuntu: accesso remoto sicuro, configurazione e risoluzione dei problemi

目次

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/config del client:
    Host *
        ServerAliveInterval 60
    
  • Regola le impostazioni di timeout sul server Aggiungi quanto segue a /etc/ssh/sshd_config e riavvia il servizio:
    ClientAliveInterval 60
    ClientAliveCountMax 3
    
    sudo 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

  1. Modifica sshd_config
    sudo nano /etc/ssh/sshd_config
    
  1. Modifica o aggiungi le seguenti impostazioni
    PasswordAuthentication no
    PubkeyAuthentication yes
    
  1. 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

  1. Apri sshd_config
    sudo nano /etc/ssh/sshd_config
    
  1. Modifica la seguente riga (esempio: cambia la porta a 2222)
    Port 2222
    
  1. Consenti la nuova porta attraverso il firewall
    sudo ufw allow 2222/tcp
    
  1. Riavvia il servizio SSH
    sudo systemctl restart ssh
    
  1. 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

  1. Apri sshd_config
    sudo nano /etc/ssh/sshd_config
    
  1. Modifica la seguente riga
    PermitRootLogin no
    
  1. 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

  1. Installa Fail2Ban
    sudo apt install fail2ban -y
    
  1. Copia il file di configurazione predefinito
    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
    
  1. Modifica jail.local
    sudo nano /etc/fail2ban/jail.local
    
  1. Modifica la sezione [sshd]
    [sshd]
    enabled = true
    maxretry = 5
    bantime = 600
    findtime = 600
    
  • maxretry : Numero di tentativi di accesso falliti consentiti
  • bantime : Durata del blocco IP (secondi)
  • findtime : Finestra temporale per contare i tentativi falliti (secondi)
  1. Riavvia Fail2Ban
    sudo systemctl restart fail2ban
    
  1. 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:

  1. Il servizio SSH non è in esecuzione
    sudo systemctl status ssh
    

Soluzione: Avvia il servizio se è fermo.

sudo systemctl start ssh
  1. Il firewall (UFW) sta bloccando SSH
    sudo ufw allow ssh
    sudo ufw enable
    
  1. 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:

  1. Modifica il file di configurazione SSH
    sudo nano /etc/ssh/sshd_config
    
  1. Modifica la direttiva Port
    Port 2222
    
  1. Consenti la nuova porta attraverso il firewall
    sudo ufw allow 2222/tcp
    
  1. 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:

  1. Assicurati che la chiave pubblica sia installata correttamente
    ls -l ~/.ssh/authorized_keys
    

Assicurati che authorized_keys esista e contenga la chiave corretta.

  1. Controlla i permessi dei file
    chmod 600 ~/.ssh/authorized_keys
    chmod 700 ~/.ssh
    
  1. 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
  1. 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

  1. Apri il file di configurazione
    sudo nano /etc/ssh/sshd_config
    
  1. Aggiungi una voce AllowUsers
    AllowUsers username@192.168.1.100
    
  1. Riavvia il servizio SSH
    sudo systemctl restart ssh
    

Metodo 2: Configura il firewall (UFW)

  1. Consenti l’accesso da un IP specifico
    sudo ufw allow from 192.168.1.100 to any port 22
    
  1. 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

  1. Aggiungi quanto segue a ~/.ssh/config :
    Host *
        ServerAliveInterval 60
    

Impostazioni lato server

  1. Modifica sshd_config
    sudo nano /etc/ssh/sshd_config
    
  1. Aggiungi o modifica:
    ClientAliveInterval 60
    ClientAliveCountMax 3
    
  1. 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_config se 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

🎥 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 fail2ban e logwatch per 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! 🖥️🔐

年収訴求