Autenticazione con certificati

Abitualmente ci si autentica al mondo Linux con lo username e la password. La password è il segreto, custodito dall’utente, che impedisce l’accesso a terzi.
Se la macchina è accessibile remotamente chiunque possegga username e password può accedere. La password è spesso poco complessa, facile da ricordare: si sa l’utente è pigro. Una password poco forte è facile da indovinare e, in qualche forma, viaggia nella rete fra client e il server remoto fornendo elementi per la sua scoperta.
Una alternativa, al modo classico, è l’uso di una coppia di chiavi pubblica/privata generate ad hoc per l’autenticazione.

Con questa modalità sul server risiede la chiave pubblica dell’utente, sul client (ad esempio PuTTY o ssh), la chiave privata, eventualmente protetta da una passkey.

Durante l’autenticazione il server invia una stringa (challenge string, differente tutte le volte) al client. Il client restituisce una stringa, che dipende dalla precedente, criptata con la chiave privata. Il server controlla quanto reso decriptando con la chiave pubblica. Se i controlli sono positivi la sessione può iniziare. I certificati non vengono mai scambiati via rete, quello che viaggia è una stringa criptata differente ad ogni login. L’eventuale passkey è usata solo dal client, in locale.

Linuxteaching | login senza password ssh

Come si fa.

Occorre generare le chiavi pubblica e privata, esistono diversi strumenti per farlo, tutti equivalenti: uno vale l’altro.

Via Linux (ssh) si può usare il comando ssh-keygen. Questo comando (vedere man ssh-key per opzioni differenti dal default) genera le chiavi e le salva in ~/.ssh/id_rsa (la chiave privata) e ~/.ssh/id_rsa.pub la chiave pubblica. La chiave pubblica andrà copiata nel lato server file ~/.ssh/authorized_keys.
Quindi, se le chiavi sono state generate lato client, ci si collega al server in modo tradizionale e si copia il contenuto di ~/.ssh/id_rsa.pub in ~/.ssh/authorized_keys lato server. Attenzione che ~/.ssh/authorized_keys può altre chiavi, quindi il certificato pubblico va aggiunto in coda a quelli eventualmente esistenti. La copia può essere fatta con un’operazione di copia/incolla: la chiave è una stringa di testo.

Via Windows.  PuTTY fornisce un proprio programma per generare le chiavi: PuTTYgen. La procedura genera le due chiavi e consente di salvarle un una qualunque directory. Visualizza la chiave pubblica che può essere copiata negli appunti e successivamente inserita in ~/.ssh/authorized_keys lato server.
In PuTTY, nella configurazione della connessione (Connection -> SSH ->Auth) va indicato il file con la chiave privata.

Un ulteriore esempio è disponibile qui:

 

 

https://youtu.be/UpqV9O-njXU

Via Windows (x2go). Anche x2go ha un proprio programma per generare le chiavi, normalmente installato in %Programfile%x2goclient. Per generare le chiavi:

%ProgramFiles%/x2goclient>ssh-keygen.exe

Le chiavi in id_rsa e id_rsa.pub sono salvate in una directory indicata dal programma. Anche in questo caso la chiave pubblica va copiata a lato server in ~/.ssh/authorized_keys
La chiave privata va configurata lato client in x2goclient

Finita una di queste operazioni, è possibile accedere senza nessuna password, al più è richiesta la passkey.

Per rendere l’accesso più sicuro è consigliabile disabilitare il login con nome e password

vi /etc/ssh/sshd_config  (servono i permessi di root)

ed editare

ChallengeResponseAuthentication no

Forums: 
Categoria: