Come generare una chiave SSH

da | Guide

Cosa significa accesso tramite SSH

SSH (Secure SHell) è un protocollo che permette di stabilire una sessione remota cifrata tramite interfaccia a riga di comando con un altro host (tipicamente server) e che permetta facilmente di gestire file e directory o modificarne i permessi.

Cos’e’ una chiave SSH

La chiave SSH è un tipo di autenticazione basata su chiavi, utilizzata per l’accesso tramite SSH. E’ molto utilizzata in quanto è un metodo di accesso più sicuro rispetto all’autenticazione utente/password. La procedura prevede la generazione di una coppia di file; una chiave privata e una pubblica. La chiave pubblica verrà installata sull’ host a cui ci si dovrà collegare mentre la chiave privata è la chiave che ci permette il collegamento.

Creazione chiavi

Per prima cosa è necessario generare le chiavi. E’ possibile farlo con qualsiasi distribuzione Linux o anche direttamente su un host a cui ci collegheremo tramite chiavi.

Iniziamo la generazione aprendo un terminale ed eseguendo il comando ssh-keygen

ssh-keygen -t rsa

Ci verrà richiesto il nome e il percorso di destinazione dove verrà salvata la nostra coppia di chiavi (di default: /nomeutente/.ssh/id_rsa); inseriamolo o premiamo Invio

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):

Come ulteriore livello di sicurezza, ci verrà richiesta una password che si dovrà inserire ogni volta per poter accedere tramite chiave privata; inseriamola due volte (per conferma) o altrimenti premiamo due volte Invio per evitarla e passare allo step successivo

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Al termine della procedura le nostre chiavi sono state create

Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:pznddwK+QCdzjWBEGQdn/lCXt1lY37TGWDjnnJuCiEg root@internautablog
The key’s randomart image is:
+—[RSA 2048]—-+
| .=++ o+=|
| ..= +==*|
| o o.=+O|
| E . . =.* |
| . . S * * o o|
| . . B O o o |
| + o o + .|
| . . o o |
| . |
+—-[SHA256]—–+

Infatti nel percorso scelto (nel mio caso /root/.ssh/) saranno presenti due files id_rsa e id_rsa.pub

[root@internautablog .ssh]# ll
total 8
-rw——- 1 root root 1679 Mar 17 16:25 id_rsa
-rw-r–r– 1 root root 401 Mar 17 16:25 id_rsa.pub

Configurazione host a cui collegarsi

Ora vedremo come configurare l’host di destinazione su cui ci colleghermo tramite chiavi. Per questa procedura è necessario avere il file id_rsa.pub a portata di mano

Apriamo un terminale sull’host selezionato

Andiamo nella directory /utente/.ssh (nel mio caso /root/.ssh)

cd /root/.ssh

Se non dovesse esistere, creiamo il file authorized_keys

vi authorized_keys

Apriamo o stampiamo parallelamente con un’editor il file id_rsa.pub creato precedentemente; il contenuto sarà del tipo

[root@internautablog .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCkW9MoGcfVjUeNzaMxc6etaOX+3qE4+k1wY15E6J5454V21wLrYgkIZnJn6VdPEKKGYLXBieGrvK6fkwIRTdOFyKX7zqtKmkaPbdDafPTq/9QHLFaPMJuhrvBiVHIRCuvM1w/CpS5VTXb7uaJet5WSkyv7rzOeNz6vuL9s1Upwl2mR08PtyEEJtiVpuSH9mlIhYKPMKzX7nhvjoIZnbVh1cmXs7SmpcJ0HERYqt6PFxGk68wOo7sjXtCwNmpwCyuPvYAOTakmq/PW4YOakG/df30oVJXv3rHbDHiRXLn3ILfeC1fe0doxg4YDxXDDFynPv4IckvMXOnwjW/gBSXDdt root@internautablog.it

Ora non ci resta che copiare questo testo all’interno del file authorized_keys

Premiamo il tasto i per abilitare l’immissione del testo e incolliamo.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCkW9MoGcfVjUeNzaMxc6etaOX+3qE4+k1wY15E6J5454V21wLrYgkIZnJn6VdPEKKGYLXBieGrvK6fkwIRTdOFyKX7zqtKmkaPbdDafPTq/9QHLFaPMJuhrvBiVHIRCuvM1w/CpS5VTXb7uaJet5WSkyv7rzOeNz6vuL9s1Upwl2mR08PtyEEJtiVpuSH9mlIhYKPMKzX7nhvjoIZnbVh1cmXs7SmpcJ0HERYqt6PFxGk68wOo7sjXtCwNmpwCyuPvYAOTakmq/PW4YOakG/df30oVJXv3rHbDHiRXLn3ILfeC1fe0doxg4YDxXDDFynPv4IckvMXOnwjW/gBSXDdt root@internautablog.it

~
~

— INSERT —

Salviamo e chiudiamo il file premendo il tasto ESC e, in seguito, :x!

Ora il file authorized_keys contiene la nostra chiave pubblica

 

Test di connessione

Proviamo ora a collegarci tramite la chiave privata;

Apriamo un terminale ed effettuiamo la connessione (se avessimo inserito una password durante la creazione delle chiavi, dovrete inserirla quando richiesto)

ssh -i percorsoChiavePrivata root@host

Se tutto è stato configurato correttamente ci troveremo davanti alla riga di comando

[root@internautablog ~]#

Abilitare l’accesso solo tramite chiavi

Una volta testata la corretta configurazione e connessione tramite chiavi, è consigliato di disattivare la possibilità di autenticazione tramite utente/password e permettere l’accesso solo tramite chiavi.

Una volta connessi all’host di destinazione, è necessario modificare il file di configurazione dell’SSH

vi /etc/ssh/sshd_config

Cerchiamo la riga

PasswordAuthentication yes

e modifichiamola in

PasswordAuthentication no

Non ci resta che riavviare il servizio SSH con il comando

systemctl restart sshd.service

Se ora tentaste di collegarvi senza chiavi all’host di destinazione dovrestre riscontrare il seguente errore

No supported authentication methods available (server sent: publickey,gssapi-keyex,gssapi-with-mic)

Il che significa che l’accesso consentito all’host è solo tramite chiavi

Informazioni aggiuntive

Una peculiarità dell’autenticazione tramite chiavi è la possibilità di collegarsi ad host diversi utilizzando la stesse chiavi; ovvero, basta solo ripete la sezione “Configurazione host a cui collegarsi” per ogni host a cui vogliamo collegarci e potremmo farlo utilizzando la stessa chiave privata

Articoli Consigliati
Come configurare Apple Music su Alexa

Come configurare Apple Music su Alexa

Avete appena acquistato il servizio di streaming musicale Apple e volete integrarlo con Amazon? Questa guida mostra proprio come configurare Apple Music su Alexa