Login automatico, ma sicuro
ssh, loginCosa vogliamo fare:
user1 da host1 deve collegarsi a host2, host3, host4… senza ripetere la password tutte le volte.
Soluzione:
user1 deve generare sulla sua macchina (host1) una coppia di chiavi di autenticazione: una chiave pubblica e una privata.
Si utilizza il comando ssh-keygen. ssh-keygen vuole sapere che tipo di chiavi vogliamo generare. Ci sono almeno due tipi possibili: rsa e dsa.
Il primo più veloce del secondo ma il secondo più sicuro del primo. Se si vuole usare l’rsa si digita: ssh-keygen -t rsa.
Ci verrà chiesto dove vogliamo salvare le chiavi ma andrà benissimo confermare il path suggerito dal sistema. Poi ci verrà chiesto di inserire una password, anche lunga (passphrase), e di ripeterla. Siccome vogliamo poterci collegare ad un’altra macchina in maniera automatica e veloce, non scriveremo nessuna passphrase. Riassumendo, alle richieste di ssh-keygen risponderemo con 3 return.
[host1:~] user1% ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/user1/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
>Enter same passphrase again:
Your identification has been saved in /Users/user1/.ssh/id_rsa.
Your public key has been saved in /Users/user1/.ssh/id_rsa.pub.
The key fingerprint is:
a5:g3:7e:51:g9:c3:b5:47:1e:16:d5:6f:94:35:e0:14 user1@ host1.local.
Nella cartella .ssh all’interno della nostra home (/Users/user1/.ssh) troveremo due nuovi file: id_rsa e id_rsa.pub.
Il secondo contiene la nostra chiave pubblica.
Ed ecco la magia: la chiave pubblica (id_rsa.pub) dovrà essere copiata su tutte quelle macchine su cui vorremo collegarci con ssh senza dover digitare la password ogni volta.
La chiave va copiata all’interno di un file chiamato authorized_keys posizionato sempre dentro alla directory .ssh della nostra home (/Users/user1/.ssh).
In pratica dovremo copiare la nostra chiave pubblica, editare il file authorized_keys e incollare la chiave su una nuova riga. Ogni chiave è composta da una unica riga, molto lunga.
Quindi:
[host1:~] root# cd ~/.ssh [host1:~/.ssh] root# more id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAvgcYlNvOM4iPfhDpTpyS9Iv8w+lK VJMji6cTpk1lz9wzWgW8O6DEJGqIW0/VgwKpPqXyvVvq5JK4mVtQEuQ4PiiMiGA0 /viPUfVkZVRPMu+/EuP/FNWf9cOh9nEL7qwg/T0SIa7pN8NkLcQH3ESOnUNe/J6R YwrIgag09dKaoZ0= user1@ host1.local
selezionare e copiare il contenuto del file (nell’esempio: le ultime
4 righe).
[host1:~] user1# ssh host2 user1@ host2's password: (digitare la pw) Last login: Sun Apr 20 08:01:46 2003 from host1.local Welcome to Darwin! [host2:~] user1# cd .ssh (se la directory non c'e', crearla con mkdir .ssh) [host2:~/.ssh] user1# pico authorized_keys
... si apre l’editor. A questo punto si incolla la chiave precedentemente copiata facendo attenzione a togliere eventuali "a-capo" di troppo. Ricordo ancora che ogni chiave deve stare su una sola riga.
Salvare le modifiche e uscire.
Da questo momento quando user1 da host1 si conette a host2 non dovrà più digitare la password.
Per approfondimenti:
Consiglio innanzitutto di guardare i manuali in linea:
- man ssh
- man ssh-keygen
RSS 2.0
Atom