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.

bash
ssh utente@120.121.122.123

Dopo 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.

bash
ssh-keygen -t ed25519 -C "accesso-server-produzione" -f ~/.ssh/produzione

Durante 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:

  1. Tu generi una coppia di chiavi sul tuo computer (privata e pubblica)
  2. Copi la chiave pubblica sul server remoto
  3. Quando ti colleghi, il server invia una “sfida” cifrata con la tua chiave pubblica
  4. 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.

bash
ssh-copy-id -i ~/.ssh/produzione.pub utente@120.121.122.123

Alla 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.

bash
ssh -i ~/.ssh/produzione utente@120.121.122.123

Se 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.

bash
nano ~/.ssh/config

Aggiungi 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/produzione

Ora puoi connetterti semplicemente digitando nel terminale:

bash
ssh server-produzione

Buone 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.

  1. Non riutilizzare la stessa chiave per tutti i server: se la chiave viene compromessa, si compromette l’intero sistema
  2. Esegui un backup sicuro delle chiavi private (ad esempio in un password manager)
  3. Revoca le chiavi quando non servono più (rimuovile dal file authorized_keys)