Introduzione a SSH: configurazione dell'accesso remoto, utilizzo delle chiavi
1. Cos'è SSH?
Immagina di trovarti a un lato del pianeta, mentre il server che devi configurare è dall'altro lato. Il lavoro di un tecnico IT che corre da un ufficio all'altro non è ciò che vogliamo. Per fortuna, esiste SSH (Secure SHell), uno strumento per la gestione remota dei server.
SSH è un protocollo di rete che consente di connettersi in modo sicuro a computer remoti. La connessione avviene utilizzando la crittografia, il che significa che i dati trasmessi sono protetti da occhi indiscreti. SSH sostituisce metodi obsoleti come Telnet, che trasmetteva i dati in chiaro (come una cartolina delle Poste Italiane).
Vantaggi di SSH
- Sicurezza. SSH utilizza la crittografia per proteggere i dati da intercettazioni.
- Flessibilità. Gestione remota del server, trasferimento file, creazione di tunnel — tutto questo è possibile con SSH.
- Cross-platform. Funziona sia su Linux, che su Windows (incluso WSL), sia su MacOS.
Ora che hai capito a cosa serve SSH, passiamo alla pratica.
2. Installazione del client SSH
Iniziamo con il client, che ti permetterà di collegarti al server. Se stai utilizzando una moderna distribuzione di Linux, è probabile che il client SSH sia già installato. Controlliamo questo:
ssh -V
Dovresti vedere le informazioni sulla versione del client SSH. Se il comando non viene trovato, installalo (su Ubuntu e altre distribuzioni basate su Debian):
sudo apt update
sudo apt install openssh-client
Su MacOS il client SSH è preinstallato, mentre se lavori in WSL, l'installazione è simile a Linux.
3. Connessione a un server remoto tramite SSH
La connessione al server si esegue con il comando:
ssh username@hostname
username
— è il nome utente sul server remoto.hostname
— è l'indirizzo IP o il nome di dominio del server.
Esempio di connessione:
ssh student@192.168.1.10
Se tutto è configurato correttamente, il sistema ti chiederà una password. Dopo aver inserito la password, ti troverai nella console remota del server. Congratulazioni, sei a metà strada per diventare l'operatore del super-cattivo in un film sui hacker.
4. Installazione e configurazione del server SSH
Installazione del server SSH
Se stai lavorando su un server o una macchina locale a cui vuoi connetterti, devi installare il server SSH. Su Ubuntu fallo così:
sudo apt update
sudo apt install openssh-server
Controlliamo lo stato del servizio SSH:
sudo systemctl status ssh
Dovresti vedere un messaggio tipo active (running)
. Se il server non è avviato, usa:
sudo systemctl start ssh
sudo systemctl enable ssh
Ora il server SSH è pronto per accettare connessioni.
Configurazione del server SSH
Il file di configurazione principale del server SSH è /etc/ssh/sshd_config
. Per modificarlo utilizza qualsiasi editor di testo, ad esempio nano
:
sudo nano /etc/ssh/sshd_config
Fai attenzione ai seguenti parametri:
Port 22
— porta su cui lavora SSH.PermitRootLogin no
— divieto di connessione per root (si consiglia di lasciareno
per motivi di sicurezza).PasswordAuthentication yes
— permesso di connessione tramite password.
Dopo aver modificato i parametri, riavvia il server SSH:
sudo systemctl restart ssh
5. Utilizzo dell'autenticazione con chiavi
Connettersi con una password è comodo, ma non sicuro. Il miglior approccio è usare le chiavi SSH.
Generazione di chiavi SSH
Sulla macchina client, esegui il comando:
ssh-keygen
Lo script chiederà il percorso per salvare la chiave (di default ~/.ssh/id_rsa
). Puoi premere Enter per accettare il percorso predefinito. Poi ti verrà chiesta una passphrase. È meglio lasciarlo vuoto per semplificare (anche se non è molto sicuro).
Dopo aver eseguito il comando, i file delle chiavi verranno creati:
id_rsa
— chiave privata (non renderla pubblica, come il codice sorgente del tuo progetto prima del rilascio, specialmente se ha accumulato debiti tecnici).id_rsa.pub
— chiave pubblica (può essere usata per connettersi).
Trasferire la chiave al server
Utilizza il comando ssh-copy-id
per trasferire la chiave pubblica al server:
ssh-copy-id username@hostname
Questo aggiungerà la tua chiave pubblica al file ~/.ssh/authorized_keys
sul server. Ora puoi connetterti senza inserire la password.
Prova:
ssh username@hostname
Se tutto è andato bene, non ti verrà chiesta la password. La tua vita è ufficialmente diventata un po' più semplice.
SSH e WSL
Se lavori su Windows con WSL, puoi anche lì usare SSH. Apri il terminale WSL e installa il client SSH:
sudo apt update
sudo apt install openssh-client
I passaggi successivi sono gli stessi di Linux.
6. Parte pratica: configurazione di SSH su localhost
Per fare pratica puoi configurare una connessione SSH tra due macchine nella stessa rete o anche sul tuo computer (utilizzando localhost
come indirizzo).
- Installa il server e il client SSH sulla stessa macchina.
- Connettiti tramite l'indirizzo locale:
ssh your_user@localhost
- Configura la connessione tramite chiave come mostrato sopra.
Alla fine dovresti ottenere una connessione senza inserire la password.
7. Lavorare con configurazioni e alias SSH
Se ti connetti spesso a diversi server, puoi semplificarti la vita aggiungendo una configurazione SSH al file ~/.ssh/config
:
Host myserver
HostName 192.168.1.10
User student
IdentityFile ~/.ssh/id_rsa
Ora puoi connetterti semplicemente con il comando:
ssh myserver
Errori comuni e come risolverli
Errore "Connection refused". Questo significa che il server SSH non è avviato sulla macchina remota. Assicurati che sia installato e avviato.
Errore "Permission denied". Oppure hai inserito una password errata, oppure le chiavi sono configurate male. Controlla il contenuto del file
~/.ssh/authorized_keys
sul server.Errore "No route to host". Verifica se il server è raggiungibile in rete (usa
ping
).
Ora sei armato di conoscenze su come configurare SSH, utilizzare le chiavi e evitare i problemi più comuni. È uno strumento potente che viene utilizzato ovunque, sia per configurare server al lavoro che per gestire un Raspberry Pi a casa.
GO TO FULL VERSION