SSH è un protocollo per la comunicazione cifrata e autenticata tra due host, che sfrutta la riga di comando.
L'host con cui si vuole comunicare deve avere in funzione il server SSH (con Ubuntu è sufficiente installare il pacchetto openssh-server)
Per avviare la sessione di lavoro, da un terminale si digita
ssh utente@hostname
dove utente e hostname sono rispettivamente il nome dell'utente e il nome (o l'indirizzo IP) dell'host.
Alla prima connessione, viene richiesto di confermare l'autenticità della controparte:
The authenticity of host '****.local (192.168.0.110)' can't be established.
RSA key fingerprint is 09:61:6d:8e:6f:79:a7:a5:6d:f7:91:1c:a2:cc:8c:35.
Are you sure you want to continue connecting (yes/no)?
L'impronta digitale RSA viene memorizzata nel file locale ~/.ssh/known_hosts
.
È possibile specificare un comando da eseguire sul calcolatore remoto:
ssh utente@hostname ls
Un utente può generare una coppia di chiavi RSA su un host e sfruttare un meccanismo di sfida per ottenere l'autenticazione su un altro host senza bisogno di password.
Supponendo di voler amministrare (con privilegi di root) un altro host, dovremo seguire i seguenti passi.
Sul nostro calcolatore generare una coppia di chiavi RSA:
ssh-keygen -t rsa
Copiare il file ~/.ssh/id_rsa.pub
nella directory .ssh dell'utente con il quale ci vogliamo autenticare sull'host remoto (nel nostro caso, l'utente root).
Sul calcolatore da gestire, accodare il file copiato al file ~/.ssh/authorized_keys
dell'utente con il quale ci vogliamo autenticare (il file deve risultare di sua proprietà).
In alcune situazioni, può essere necessario evitare che venga chiesta la conferma dell'autenticità della controparte (ad esempio, nel caso di host il cui indirizzo IP è ottenuto via DHCP).
Si può disabilitare la richiesta con i seguenti parametri sulla riga di comando:
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@otherhost.local
Oppure, su base permanente, si può modificare il proprio file ~/.ssh/config
con il seguente contenuto:
Host *.local
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null
Ovviamente, il rischio è di essere soggetti ad attacchi di tipo Man in the middle.