Setup SSH Public Key Authentication in Ubuntu 18.04 con OpenSSH

Setup SSH Public Key Authentication in Ubuntu 18.04 con OpenSSH

OpenSSH è un insieme di software free ed open-source per connessione remote client/server crittografate.

L’installazione e la configurazione sulle macchine client locale e server remoto è molto semplice:

Client:

sudo apt install openssh-client

Dopo l’installazione possiamo scegliere quale algoritmo utilizzare per la generazione di una coppia di chiavi:

  • DSA: algoritmo obsoleto e non più utilizzato dalla versione OpenSSH 7.
  • RSA: sicura per key superiore a 3072 bit
  • ECDSA: Dipende dal numero casuale generato dal pc che verrà usato per creare la firma per la chiave
  • Ed25519: L’algoritmo a chiave pubblica migliore e più veloce disponibile oggi.

Possiamo procedere alla creazione di una chiave RSA a 4096bit

ssh-keygen -t rsa 4096 -C "Nome PC o Utente"

l’opzione -C è opzionale e serve per aggiungere un commento alla chiave.

Oppure possiamo generare una chiave Ed25519:

ssh-keygen -t ed25519 -C "Nome PC o Utente"

l’opzione -C è opzionale e serve per aggiungere un commento alla chiave. Per la chiave Ed25519 non è necessarie indicare la lunghezza.

Server:
Dopo la generazione della coppia di chiavi, sul server remoto installiamo Openssh-server e creiamo la cartella per aggiungere la chiave pubblica che abbiamo appena creato.

sudo apt install openssh-server
mkdir -p ~/.ssh
chmod 0700 ~/.ssh

Client:
A questo punto utilizzando l’utility di OpenSSH, copiamo la chiave pubblica (nell’esempio è la chiave ed25519) sul server remoto:

ssh-copy-id -i ~/.ssh/id_ed25519.pub nomeUtente@IP_Server_Remoto

Server:
Lato server, dobbiamo modificare la configurazione di openssh-server per disabilitare connessione tramite password. Editiamo pertanto il file /etc/ssh/sshd_config

#Porta in ascolto per connessione SSH
Port 22
AddressFamily inet
#l'ip del mio server in cui il demone ssh è in ascolto (da modificare)
ListenAddress 192.168.10.1
#consento l'accesso soltanto all'utente admin
AllowUsers admin
LoginGraceTime 2m
PermitRootLogin no
MaxAuthTries 3
PubkeyAuthentication yes
AuthorizedKeysFile     .ssh/authorized_keys
HostbasedAuthentication no
IgnoreRhosts yes
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM yes
AllowTcpForwarding no
X11Forwarding no
PrintMotd no
PrintLastLog no
#Disconnessione dopo 5 minuti di inattività
ClientAliveInterval 300
ClientAliveCountMax 0
MaxStartups 2:30:90
Banner /etc/issue.net
AcceptEnv LANG LC_*

E’ possibile verificare la configurazione, prima di riavviare il servizio:

sshd -t
echo $?

Se la risposta sarà 0, possiamo procedere al riavvio del demone OpenSSH e testare la connessione.

Controlliamo che la porta sia in listening:

netstat -tulpn | grep :22

Client:
Ora possiamo effettuare la connessione da client verso il server

ssh admin@192.168.10.1

Oppure, aggiungendo alla fine del file ~/.ssh/config la seguente configurazione:

Host NomeMioServer
     HostName 192.168.10.1
     User admin
     Port 22
     IdentityFile ~/.ssh/id_ed25519

e poter effettuare la connessione semplicemente digitando:

ssh NomeMioServer

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *