Oggi vediamo una procedura piuttosto comune tra chi utilizza server linux o più in generale shell *nix, ogni volta che ci logghiamo su un server linux con ssh è necessario inserire username e password, alla lunga però questo loggarsi può essere frustrante anche perchè spesso sopratutto in ambito lavorativo le password di un server sono molto complesse, quindi ricordarsele può essere un problema, ed ecco che ci vengono in auiuto le chiavi pubbliche.
In parole povere quando noi iniziamo una sessione ssh il client e il server iniziano a comunicare tra di loro per mettersi daccordo su che tipo di codifica e quali algoritmi usare ecc… se il client sceglie di usare l’autenticazione per chiave il server crea una challenge ossia dice al client prova a decodificarmi questi dati utilizzando la tua chiave privata se il client riesce e invia indietro al server i dati decodificati, allora il server gli da accesso.
Può sembrare un pò contorto sopratutto se non si conosce il funzionamento delle chiavi pubbliche/private ma quello che ci interessa ora è capire che il server possiede una chiave pubblica generata da noi e caricata sul server (dopo vedremo come), chiave che utilizzerà per creare la Challenge, il client possiede la sua chiave privata ed è in grado di decodificare ciò che è stato criptato con la chiave pubblica e quindi risolvere la sfida.
Ok basta teoria passiamo alla pratica per prima cosa ci servirà generare la nostra chiave, per farlo su Linux è sufficiente utilizzare questo comando, vi sarà chiesto dove salvarla in genere la configurazione di default va bene:
ssh-keygen -t rsa
Su Windows abbiamo diversi modi per farlo ad esempio usando PuTTYgen (visuale) o installandoOpenSSH per Windows ci sono comunque tanti programmi di ogni tipo, con OpenSSH dovreste avere i stessi comandi presenti su Linux, durante la generazione della chiave (o meglio delle chiavi) vi sarà richiesta una password, può sembrare un controsenso visto che il nostro scopo era non digitare più password, ma questa password è facoltativa e serve per sbloccare la nostra chiave privata, possiamo anche non inserirla oppure metterne una più semplice da ricordare e se avete usato il comando Linux vi potrete anche godere l’ascii art generato dalla firma.
Perfetto una volta generata la chiave dovremmo copiarla sul server, se abbiamo una shell linux è sufficiente fare questo:
ssh-copy-id [email protected]
Questo farà si che venga copiata la chiave pubblica sul server, su windows la cosa potrebbe essere un pò più complicata, intanto logghiamoci sul server e copiamo la chiave pubblica in~/.ssh/authorized_keys (la tilde indica la home dell’utente loggato) su una nuova riga.
Ora su linux abbiamo terminato se facciamo:
ssh [email protected]
dovremmo riuscire a loggarci senza problemi.
Su Windows invece non abbiamo ancora finito, se utilizzate PuTTY (uno dei client ssh più popolari su Windows) dovrete fare a mano con il vostro server selezionato o comunque con l’indirizzo ip settato dobbiamo andare su Connection -> SSH -> Auth e sotto è possibile aprire il file della chiave privata.
Una volta fatto questo dovrebbe essere tutto a posto e dovreste riuscire a loggarvi senza problemi.