Per accedere a un server remoto tramite SSH esistono due metodi principali: l’autenticazione tramite username e password, oppure l’utilizzo di una chiave SSH.
Il primo metodo è più immediato e utilizza le credenziali create durante l’installazione del sistema operativo sul server. Il secondo richiede una configurazione iniziale, ma offre maggiore sicurezza e praticità nel lungo periodo.
Connessione Tramite Username & Password
Il metodo più semplice per connettersi a un server remoto è utilizzare le credenziali dell’utente. È sufficiente specificare il nome utente e l’indirizzo IP del server nel comando di connessione.
ssh utente@120.121.122.123Dopo aver eseguito il comando, il sistema richiederà la password dell’utente. Questa operazione sarà necessaria ad ogni connessione, poiché la password non viene salvata localmente per motivi di sicurezza.
Utilizzare una Chiave SSH
Per collegarsi ai propri server in modo sicuro, è possibile utilizzare le chiavi SSH. Questo metodo sfrutta la crittografia asimmetrica (chiave pubblica e chiave privata) per stabilire una connessione autenticata e protetta, eliminando la necessità di inserire password.
La crittografia asimmetrica è un sistema che utilizza due chiavi matematicamente correlate ma distinte: una pubblica e una privata. La caratteristica fondamentale è che ciò che viene cifrato con una chiave può essere decifrato solo con l’altra. Per approfondire l’argomento e capire come generare una coppia di chiavi, consulta la guida Creare una Chiave SSH .
Generare una Chiave SSH
Come prima cosa sarà necessario andare a creare una coppia di chiavi. In questo esempio utilizzeremo l’algoritmo di cifratura Ed25519 , che al momento della scrittura di questa guida è considerato il più moderno e sicuro disponibile.
ssh-keygen -t ed25519 -C "accesso-server-produzione" -f ~/.ssh/produzioneDurante il processo di generazione ti verrà chiesto se vuoi inserire una Passphrase (ossia una password) per proteggere la chiave privata. È opzionale ma da molti consigliata, in quanto se qualcuno dovesse accedere al tuo filesystem, senza la passphrase da te inserita la chiave sarebbe inutilizzabile.
Dopo l’esecuzione troverai due file: ~/.ssh/produzione che è la chiave privata (da non condividere MAI) e ~/.ssh/produzione.pub che è la chiave pubblica (da copiare sui server).
Installare la Chiave sul Server
Questo sistema è considerato molto più sicuro rispetto a una password tradizionale, in quanto la chiave privata non viene mai trasmessa sulla rete. Il processo di login avviene in questo modo:
- Tu generi una coppia di chiavi sul tuo computer (privata e pubblica)
- Copi la chiave pubblica sul server remoto
- Quando ti colleghi, il server invia una “sfida” cifrata con la tua chiave pubblica
- Solo tu, possedendo la chiave privata, puoi decifrare la sfida e dimostrare la tua identità
Per installare la chiave sul server remoto in modo automatico, utilizza il comando qui sotto. Questo provvederà a copiare la chiave pubblica nella cartella ~/.ssh, impostare i permessi corretti e aggiungere la chiave al file authorized_keys.
ssh-copy-id -i ~/.ssh/produzione.pub utente@120.121.122.123Alla prima esecuzione del comando ti verrà chiesta la password dell’utente remoto, per verificare la validità dell’account e i suoi permessi, e quindi abbinare quella chiave all’utente. Successivamente non verrà più richiesta alcuna password.
Permessi dei file
SSH è molto rigoroso sui permessi dei file. Se i permessi sono troppo aperti (es. 777), rifiuterà l’autenticazione per motivi di sicurezza.Stabilire una Connessione
Una volta eseguita la configurazione su entrambi i sistemi (client e server), sarà possibile utilizzare la chiave SSH per accedere al server. Per farlo, è necessario indicare quale chiave utilizzare durante la richiesta di connessione.
ssh -i ~/.ssh/produzione utente@120.121.122.123Se tutto è configurato correttamente, accederai senza inserire la password (o inserendo solo la passphrase della chiave, se l’hai impostata).
Creare un Alias
Per evitare di dover indicare ogni volta il percorso della chiave e specificare a quale server connettersi, è possibile configurare un alias. Richiede un piccolo investimento di tempo iniziale, ma ti farà risparmiare molto tempo e ti semplificherà la vita.
Per configurare un alias, modifica il file ~/.ssh/config con il seguente comando.
nano ~/.ssh/configAggiungi i parametri della connessione, strutturati come nell’esempio sotto:
Host server-password
HostName 120.121.122.123
User utente
Host server-produzione
HostName 120.121.122.123
User utente
IdentityFile ~/.ssh/produzioneOra puoi connetterti semplicemente digitando nel terminale:
ssh server-produzioneBuone Pratiche di Sicurezza
Le chiavi SSH sono un ottimo metodo per connettersi a server remoti, ma è comunque necessario seguire alcune regole per aumentare il livello di sicurezza.
- Non riutilizzare la stessa chiave per tutti i server: se la chiave viene compromessa, si compromette l’intero sistema
- Esegui un backup sicuro delle chiavi private (ad esempio in un password manager)
- Revoca le chiavi quando non servono più (rimuovile dal file
authorized_keys)