Autenticazione SSH con chiavi
Attenzione
Questo articolo è stato pubblicato più di un anno fa, potrebbero esserci stati sviluppi.
Ti preghiamo di tenerne conto.
Il protocollo SSH (Secure SHell) è un protocollo cifrato usato per stabilire connessioni sicure tra due macchine: client e server. Di per sé è un protocollo già piuttosto sicuro, ma con le chiavi SSH puoi chiudere l’accesso SSH solo a macchine specifiche. Ecco come fare.
In questa mini-guida vedremo come impostare un accesso SSH ad una macchina “server” autenticandoci senza password. Con questa configurazione solo chi ha le giuste chiavi SSH potrà accedere al server. In questo esempio useremo i seguenti indirizzi IP:
- Client: 192.168.5.114
- Server: 192.168.5.10
Uno dei requisiti fondamentali è che l’utente che genera la chiave SSH abbia un account abilitato e che appartenga al gruppo sudoers
su entrambe le macchine.
Generare la chiave sul server
Per prima cosa generiamo la chiave SSH sul server. Logghiamoci sul server (direttamente o tramite SSH tradizionale) e lanciamo questo comando.
~$ ssh-keygen -t rsa
Mentre viene creata la chiave avremo la possibilità di associare o meno una password. Consiglio di associare la password a meno che non esistano impedimenti particolari tali da dover disabilitare la password al login. Ad ogni modo avremo due possibilità entrambe sicure.
Copiare la chiave sul client
Una volta completato il comando dovremo lanciarne un altro per copiare la chiave generata sul client.
~$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub USER@192.168.5.114
USER
è l’utente registrato sul client che useremo per loggarci sul server.
Parto dal presupposto che queste operazioni vengano eseguite all’interno di una LAN, ma se così non fosse occorre trovare il modo di copiare la chiave generata in ~/.ssh/id_rsa.pub
nel client in utilizzo tramite ad esempio una condivisione FTP, una mail o addirittura un wormhole.
Testare la connessione
Alla fine sarà il caso di testare l’effettivo funzionamento. Torniamo sul client e lanciamo il comando:
~$ ssh -v USER@192.168.5.10
USER
è l’utente in ascolto sul server.
Se abbiamo configurato la chiave SSH senza una password verremo immediatamente loggati sul server, al contrario se abbiamo impostato una password alla chiave, questa verrà richiesta ora.
Disabilitare l’autenticazione tramite password utente
Se ci siamo loggati con successo sul server potremmo voler configurare l’accesso in modo che non accetti connessioni tramite password utente. Apriamo il file /etc/ssh/sshd_config
con un editor e aggiungiamo una riga in fondo al file come segue:
PasswordAuthentication no
Riavviamo il servizio SSH:
~$ sudo service ssh restart
Ora se provassimo a loggarci nuovamente sul server non potremo farlo senza la chiave SSH generata. Una volta che siamo certi che tutto funzioni correttamente potremo condividere la chiave (usando il comando ssh-copy-id
dal server) con gli utenti a cui vorremo concedere l’accesso.
Qualora l’unico modo di accedere al server fosse tramite SSH attenzione a non perdere le chiavi, o non potremo entrare in macchina.
0 commenti