Ovvero come non usare più username e password.
Il fantastico tool ssh permette moltissime cose tra cui la possibilità di salvare le credenziali d'accesso in modo che non sarà più necessario fornire username e password per accedere.
Spiegazione
In realtà il meccanismo di autenticazione di SSH è molto più sofisticato rispetto ad una verifica di username e passoword.
SSH fa uno scambio di di dati binari (non passa nulla in chiaro), e fa uno scambio di chiavi di cifratura che risiedono sul device da cui si fa la connessione.
Il salvataggio delle account in realtà non salva username e password, ma i dati di identificazione dei dispositivi (fingerprinting) e le chiavi pubbliche dei dispositivi in gioco (es: del server a cui ci connettiamo e del terminale da cui facciamo la connessione).
Questo meccanismo, molto sicuro, può essere ulteriormente blindato lato server disattivando l'autenticazione tramite username e password e obbligando l'esclusivo uso di chiavi digitali.
Come fare
Per autenticarci senza usare username e password possiamo e copiare manualmente le chiavi pubbliche dei dispositivi o usare l'utility ssh-copy-id
che farà quasi tutto per noi.
Ipotizziamo di connetterci dal client mypc (con Linux come OS) al server server.example.com equipaggiato con un sistema *NIX con SSH server:
1. apriamo un terminale;
2. diamo il comando
ssh-copy-id
3. confermare il salvataggio della fingerprinting e inserire la password dell'utente;
4. al termine dello scambio e della registrazione delle chiavi avremo un messaggio come segue:
The authenticity of host 'server.example.com (10.68.12.80)' can't be established.
ED25519 key fingerprint is SHA256:YKlq/g1+9VrPY8kojjsOS1S9iEsm4KsJ6SOBBUZZiTI.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Number of key(s) added: 1
Now try logging into the machine, with: "ssh
and check to make sure that only the key(s) you wanted were added.
A questo punto tutto è fatto e per stabilire la nostra connessione sarà necessario solamente invocare ssh
come segue
ssh
Conclusione
Alcune considerazioni:
- i dati vengono salvati sui dispositivi, pertanto cambianto dispositivo bisogna rifare la procedura;
- questo metodo è ideale per creare canali automatici di comunicazione tra macchine remote (es.: trasferimento di file, raccolta di dati, esecuzione di comandi remoti, ecc...);
- le informazioni salvate per l'accesso (fingerprinting e chiavi) possono essere /prese/ da chi ha accesso al nostro dispositivo se può accedere la nostro profilo.
L'esfiltrazione dei dati, comunque, non permetterà direttamente l'accesso al sistema remoto.