Quando ci connettiamo molte volte in continuazione a un server SSH può diventare stressante inserire ogni volta la password. Per fortuna SSH prevede anche altri metodi di autenticazione, come una coppia di chiavi, pubblica e privata.

Generariamo una coppia di chiavi su Linux:

ssh-keygen -t rsa

Diamo invio per selezionare il file suggerito, quindi, al momento di inserire la password inseriamone una che ci ricordiamo, servirà a sbloccare la chiave privata, aggiungendo un ulteriore layer di sicurezza. Può essere lasciata anche vuota, ma è sconsigliato. Copiamo quindi la chiave pubblica sul server:

ssh-copy-id user@server

Ci verrà richiesta la password dell’utente con il quale ci stiamo connettendo al nostro server. Proviamo quindi ad accedere, se l’abbiamo inserita ci verrà chiesta la password per sbloccare la chiave privata:

ssh user@host

Se desideriamo configurare l’accesso con chiavi su più server sarà sufficiente copiare la chiave pubblica con ssh-copy-id user@host sui vari server. Se invece abbiamo più client dovremo ripetere l’intera procedura per ognuno di essi.

Problemi?

In alcuni casi la configurazione di default di SSH non prevede l’accesso tramite chiavi di default, sarà sufficiente andare a modificare il file di configurazione di SSH sulla macchina remota: Apriamo il file:

sudo nano /etc/ssh/sshd_config

troviamo le righe seguenti e controlliamo che siano entrambe impostate a “yes”:

RSAAuthentication yes
PubkeyAuthentication yes

Già che ci siamo possiamo impedire l’accesso root via ssh modificando la riga PermitRootLogin, modificandola così:

PermitRootLogin no

Chiudiamo e salviamo con CTRL+X, S, quindi riavviamo il server SSH con

/etc/init.d/ssh restart