Ssh e autenticazione tramite chiavi: differenze tra le versioni

RSA vs DSA
(RSA vs DSA)
Riga 11: Riga 11:
Per poter gestire questo processo di autenticazione è necessario generare una coppia di chiavi (pubblica e privata). Il comando è semplice:
Per poter gestire questo processo di autenticazione è necessario generare una coppia di chiavi (pubblica e privata). Il comando è semplice:
<pre>
<pre>
$ ssh-keygen -t dsa -b 1024
$ ssh-keygen  
</pre>
</pre>
dove <code>'''-b'''</code> rappresenta la lunghezza della chiave e <code>'''-t'''</code> viene usato per indicare il tipo di chiave. I possibili valori sono:
Si può voler scegliere una lunghezza maggiore (default 2048) con
; <code>rsa1</code>: per la versione 1 del protocollo (altamente sconsigliata);
<pre>
; <code>rsa</code> o <code>dsa</code>: per la versione 2 del protocollo.
$ ssh-keygen -b 4096
</pre>
L'uso dell'opzione <code>'''-t'''</code> per indicare il tipo di chiave è [http://guide.debianizzati.org/index.php/SSH_sicuro#Configurazione_Client fortemente sconsigliato].


Durante la generazione delle chiavi ci viene chiesto dove salvarle (normalmente è <code>~/.ssh/id_dsa</code>): il valore di default va bene
Durante la generazione delle chiavi ci viene chiesto dove salvarle (normalmente è <code>~/.ssh/id_rsa</code>): il valore di default va bene.


Per quanto riguarda la passphrase richiesta, sempre durante la generazione delle chiavi, ci sono due opzioni, entrambe con pregi e difetti:
Per quanto riguarda la passphrase richiesta, sempre durante la generazione delle chiavi, ci sono due opzioni, entrambe con pregi e difetti:
* inserire una passphrase: dal punto di vista della sicurezza, è ottimo; dal punto di vista pratico, però, si è di fronte al problema che è necessario inserirla ad ogni connessione (nel caso di più host, comunque, rappresenterebbe un sistema molto comodo di accesso tramite la stessa ''passphrase'', invece di una password diversa per ogni host)
* inserire una passphrase: dal punto di vista della sicurezza, è ottimo; dal punto di vista pratico, però, si è di fronte al problema che è necessario inserirla ad ogni connessione (nel caso di più host, comunque, rappresenterebbe un sistema molto comodo di accesso tramite la stessa ''passphrase'', invece di una password diversa per ogni host)
* inserire una passphrase vuota: dal punto di vista della sicurezza lascia un po' a desiderare, in quanto il furto della chiave permetterebbe l'accesso incondizionato agli host; dal punto di vista pratico, invece, è comodissimo, in quanto slega l'accesso alla macchina remota dalla richiesta di password.
* inserire una passphrase vuota: dal punto di vista della sicurezza lascia un po' a desiderare, in quanto il furto della chiave permetterebbe l'accesso incondizionato agli host; dal punto di vista pratico, invece, è comodissimo, in quanto slega l'accesso alla macchina remota dalla richiesta di password.
In realtà questo discorso può valere in caso di utilizzo non interattivo come ad esempio in uno script, negli altri casi si può ricorrere a <code>ssh-agent</code> per mantenere in cache le password per la sessione corrente:
<pre>
$ ssh-add ~/.ssh/id_rsa
</pre>


=== Copia manuale della chiave pubblica ===
=== Copia manuale della chiave pubblica ===
La chiave privata, come illustrato nel funzionamento, viene utilizzato dal computer che richiede la connessione (client), mentre quella pubblica deve essere salvata sul computer al quale connettersi (server).
La chiave privata, come illustrato nel funzionamento, viene utilizzato dal computer che richiede la connessione (client), mentre quella pubblica deve essere salvata sul computer al quale connettersi (server).


Prendiamo, ad esempio, la seguente chiave pubblica (contenuta nel file <code>~/.ssh/id_dsa.pub</code> presente sul client):
Prendiamo, ad esempio, la seguente chiave pubblica (contenuta nel file <code>~/.ssh/id_rsa.pub</code> presente sul client):
<pre>
<pre>
ssh-dss AAAAB3NzaC1kc3MAAACBAPe/PbwWkXR7qI8hcbxLRUS0/fIul0eUiSvu/hnXZXZDIZjVi1VlIbipff6n7Z6vF0hJRg6l
ssh-rsa AAAAB3NzaC1kc3MAAACBAPe/PbwWkXR7qI8hcbxLRUS0/fIul0eUiSvu/hnXZXZDIZjVi1VlIbipff6n7Z6vF0hJRg6l
[cut]
[cut]
gjLLTka0/QF8SP4JYFKs0Iasdju6y1slmx9IdzQt+hvMqF2+PPchCWcyBP3S5Zje4T6Az1MgrvuwCXIW6oUZXCA== user@comp
gjLLTka0/QF8SP4JYFKs0Iasdju6y1slmx9IdzQt+hvMqF2+PPchCWcyBP3S5Zje4T6Az1MgrvuwCXIW6oUZXCA== user@host
</pre>
</pre>


Riga 39: Riga 46:


<pre>
<pre>
$ ssh-copy-id -i ~/.ssh/id_dsa.pub utente@server
$ ssh-copy-id -i ~/.ssh/id_rsa.pub utente@server
</pre>
</pre>
oppure ancora utilizzando <code>scp</code>:
oppure ancora utilizzando <code>scp</code>:
<pre>
<pre>
$ scp -P <porta> ~/.ssh/id_dsa.pub <username>@<ip del server>:~/.ssh/authorized_keys
$ scp -P <porta> ~/.ssh/id_rsa.pub <username>@<ip del server>:~/.ssh/authorized_keys
</pre>
</pre>
I permessi sulla directory remota <code>~/.ssh</code> devono essere settati a:
I permessi sulla directory remota <code>~/.ssh</code> devono essere settati a:
Riga 89: Riga 96:


== Approfondimenti ==
== Approfondimenti ==
* [http://www.debian.org/doc/manuals/reference/ch-tune.it.html#s-ssh La guida Debian: SSH]
* [http://www.debian.org/doc/manuals/reference/ch06.it.html#_the_remote_access_server_and_utility_ssh La guida Debian: SSH]
[[Categoria:SSH server e amministrazione remota]]
[[Categoria:SSH server e amministrazione remota]]
271

contributi