"Errare è umano, dare la colpa al computer lo è ancora di più"
Setup SSH Public Key Authentication in Ubuntu 18.04 con OpenSSH
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 *