Creazione e uso di chiavi SSH per accedere a un sistema LINUX

Da Wiki Neen.

Indice

Introduzione

Quando ci si deve connettere molto spesso ad un server (o a molti server) tramite SSH, può essere tedioso dover inserire ogni volta la password.

Un modo sicuro per aggirare questo problema è basato sull'autenticazione tramite una coppia di chiavi (privata e pubblica).

Il concetto alla base di questo sistema di autenticazione è semplice: si demanda il compito di verificare i dati di autenticazione direttamente alle chiavi ssh, rimuovendo la richiesta della password (meno volte viene digitata, più è difficile che qualche utente male intenzionato la riesca a capire) che viene, eventualmente, sostituita dalla richiesta di una passphrase di sblocco della chiave.

Generazioni delle chiavi

Generazione delle chiavi su LINUX

Per poter gestire questo processo di autenticazione è necessario generare una coppia di chiavi (pubblica e privata). Il comando è semplice:

$ ssh-keygen 

Si può voler scegliere una lunghezza maggiore (default 2048) con

$ ssh-keygen -b 4096

L'uso dell'opzione -t per indicare il tipo di chiave è sconsigliato

Durante la generazione delle chiavi ci viene chiesto dove salvarle (normalmente è ~/.ssh/id_rsa): il valore di default va bene.

Per quanto riguarda la passphrase richiesta, sempre durante la generazione delle chiavi, ci sono due opzioni, entrambe con pregi e difetti:

$ ssh-add ~/.ssh/id_rsa

Generazione delle chiavi su WINDOWS

Nella finestra possiamo notare che ci propone "SSH-2 RSA" a "1024 bits". Generiamo la chiave clickando su "Generate". Volendo si possono generare anche chiavi a 2048 o 4096 bits. Consigliamo di utilizzare almeno 2048 bits

Procediamo come richiesto.

Modifichiamo il commento inserendo qualche informazione utile (questo commento verrà mostrato anche in fase di login).
Impostiamo una password di accesso; si potrebbe lasciare il campo vuoto, ma è sconsigliato per ragioni di sicurezza.
Clickiamo su "Save private key" per procedere al salvataggio della chiave.
Non è necessario salvare la chiave pubblica - clickando "Save public key" - dato che con la chiave privata si può sempre ricreare la chiave pubblica.

Nel campo "Nome file", inseriamo un nome a scelta (l'estensione viene aggiunta automaticamente) e clickiamo su "Salva".

Generazione delle chiavi su MAC OS

Il processo è identico a quello di generazione delle chiavi su Linux

E' necessario per prima cosa aprire il programma Terminal e lanciare il comando:

$ ssh-keygen 

Si può voler scegliere una lunghezza maggiore (default 2048) con

$ ssh-keygen -b 4096

L'uso dell'opzione -t per indicare il tipo di chiave è sconsigliato

Durante la generazione delle chiavi ci viene chiesto dove salvarle (normalmente è ~/.ssh/id_rsa): il valore di default va bene.

Per quanto riguarda la passphrase richiesta, sempre durante la generazione delle chiavi, ci sono due opzioni, entrambe con pregi e difetti:

$ ssh-add ~/.ssh/id_rsa

Configurazione

Copia manuale della chiave pubblica

La chiave privata, come illustrato nel funzionamento, viene utilizzato dal computer che richiede la connessione (client), mentre quella pubblica deve essere salvata sul computer al quale connettersi (server).

Prendiamo, ad esempio, la seguente chiave pubblica (contenuta nel file ~/.ssh/id_rsa.pub presente sul client):

ssh-rsa AAAAB3NzaC1kc3MAAACBAPe/PbwWkXR7qI8hcbxLRUS0/fIul0eUiSvu/hnXZXZDIZjVi1VlIbipff6n7Z6vF0hJRg6l
[cut]
gjLLTka0/QF8SP4JYFKs0Iasdju6y1slmx9IdzQt+hvMqF2+PPchCWcyBP3S5Zje4T6Az1MgrvuwCXIW6oUZXCA== user@host

Copiamo il contenuto nel file ~/.ssh/authorized_keys presente sul server, nella home relativa all'utente usato su quella macchina e salviamo il file.

Copia automatica della chiave pubblica

Alternativamente, è possibile usare lo script ssh-copy-id in questo modo dal client:

$ ssh-copy-id -i ~/.ssh/id_rsa.pub utente@server

oppure ancora utilizzando scp:

$ scp -P <porta> ~/.ssh/id_rsa.pub <username>@<ip del server>:~/.ssh/authorized_keys

I permessi sulla directory remota ~/.ssh devono essere settati a:

drwxr-xr-x 2 utente utente  4096 30 dic 00:31 .ssh

mentre sul file ~/.ssh/authorized_keys:

-rw-r--r-- 1 utente utente  610 30 dic 00:17 authorized_keys


Configurazione del server

Sul server, in cui deve essere già presente un'installazione di base funzionante di SSH, aggiornate il file /etc/ssh/sshd_config e settate i campi:

HostbasedAuthentication yes
RSAAuthentication yes
PubkeyAuthentication yes

Riavviate il servizio:

# /etc/init.d/ssh restart

e verificate di essere in grado di autenticarvi tramite chiave:

$ ssh utente@server

Se non volete permettere il login tramite password, ma solo attraverso public key, settate anche le opzioni:
(Da non usare se avete utilizzato una passphrase nella generazione della chiave)

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no

Attenzione: in caso di autenticazione tramite chiavi, nel file di configurazione del server non va utilizzata la direttiva AllowUsers.

Utilizzo

Utilizzo da LINUX

Se tutto è stato eseguito correttamente, sarà possibile connettersi al server tramite un semplice:

$ ssh utente@server

Se è stata inserita, durante la generazione delle chiavi, una passphrase, sarà necessario usarla per completare il processo di autenticazione, altrimenti apparirà direttamente il prompt della macchina remota.

Utilizzo da WINDOWS

Apriamo PuTTY, selezioniamo la sessione "myServer" e carichiamola con "Load".

Andiamo in "Connection/SSH/Auth" e impostiamo la chiave.

Torniamo su "Session", e salviamo la sessione modificata.

Utilizzo da MAC OS

Lanciamo Terminal

Se tutto è stato eseguito correttamente, sarà possibile connettersi al server tramite un semplice:

$ ssh utente@server

Se è stata inserita, durante la generazione delle chiavi, una passphrase, sarà necessario usarla per completare il processo di autenticazione, altrimenti apparirà direttamente il prompt della macchina remota.

Strumenti personali
Namespace
Varianti
Azioni
Navigazione
Strumenti