3 581
contributi
(da cancellare) |
|||
(11 versioni intermedie di 5 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{ | {{Da cancellare | guida doppione perché il contenuto è già coperto nella guida principale su [[SSH]]}} | ||
== Introduzione == | == Introduzione == | ||
Quando ci si deve connettere molto spesso ad un server (o a molti server) tramite '''[[SSH]]''', può essere tedioso dover inserire ogni volta la password. | Quando ci si deve connettere molto spesso ad un server (o a molti server) tramite '''[[SSH]]''', può essere tedioso dover inserire ogni volta la password. | ||
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 | $ ssh-keygen | ||
</pre> | </pre> | ||
Si può voler scegliere una lunghezza maggiore (default 2048) con | |||
<pre> | |||
$ ssh-keygen -b 4096 | |||
</pre> | |||
L'uso dell'opzione <code>'''-t'''</code> per indicare il tipo di chiave è [[OpenSSH#Configurazione_Client|fortemente sconsigliato]]. | |||
Durante la generazione delle chiavi ci viene chiesto dove salvarle (normalmente è <code>~/.ssh/ | 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 la passphrase 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/ | Prendiamo, ad esempio, la seguente chiave pubblica (contenuta nel file <code>~/.ssh/id_rsa.pub</code> presente sul client): | ||
<pre> | <pre> | ||
ssh- | ssh-rsa AAAAB3NzaC1kc3MAAACBAPe/PbwWkXR7qI8hcbxLRUS0/fIul0eUiSvu/hnXZXZDIZjVi1VlIbipff6n7Z6vF0hJRg6l | ||
[cut] | [cut] | ||
gjLLTka0/QF8SP4JYFKs0Iasdju6y1slmx9IdzQt+hvMqF2+PPchCWcyBP3S5Zje4T6Az1MgrvuwCXIW6oUZXCA== user@ | gjLLTka0/QF8SP4JYFKs0Iasdju6y1slmx9IdzQt+hvMqF2+PPchCWcyBP3S5Zje4T6Az1MgrvuwCXIW6oUZXCA== user@host | ||
</pre> | </pre> | ||
Riga 39: | Riga 46: | ||
<pre> | <pre> | ||
$ ssh-copy-id -i ~/.ssh/ | $ 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/ | $ scp -P <porta> ~/.ssh/id_rsa.pub <username>@<ip del server>:~/.ssh/authorized_keys | ||
</pre> | |||
I permessi sulla directory remota <code>~/.ssh</code> devono essere settati a: | |||
<pre> | |||
drwxr-xr-x 2 utente utente 4096 30 dic 00:31 .ssh | |||
</pre> | |||
mentre sul file <code>~/.ssh/authorized_keys</code>: | |||
<pre> | |||
-rw-r--r-- 1 utente utente 610 30 dic 00:17 authorized_keys | |||
</pre> | </pre> | ||
== Configurazione del server == | == Configurazione del server == | ||
Sul server, in cui deve essere già presente un'installazione di base funzionante di SSH, aggiornate il file <code>/etc/ssh/sshd_config</code> e settate | Sul server, in cui deve essere già presente un'installazione di base funzionante di SSH, aggiornate il file <code>/etc/ssh/sshd_config</code> e settate i campi: | ||
<pre> | |||
{{Box|Consiglio:|se '''non''' volete permettere il login tramite password, ma solo attraverso public key, settate | HostbasedAuthentication yes | ||
RSAAuthentication yes | |||
PubkeyAuthentication yes | |||
</pre> | |||
Riavviate il servizio: | |||
<pre> | |||
# /etc/init.d/ssh restart | |||
</pre> e verificate di essere in grado di autenticarvi tramite chiave: | |||
<pre> | |||
$ ssh utente@server | |||
</pre> | |||
{{Box|Consiglio:|se '''non''' volete permettere il login tramite password, ma solo attraverso public key, settate anche le opzioni: | |||
<pre> | |||
ChallengeResponseAuthentication no | |||
PasswordAuthentication no | |||
UsePAM no | |||
</pre> | |||
Da non usare se avete utilizzato una passphrase nella generazione della chiave.}} | |||
'''Attenzione''': in caso di autenticazione tramite chiavi, nel file di configurazione del server non va utilizzata la direttiva <code>AllowUsers</code>. | '''Attenzione''': in caso di autenticazione tramite chiavi, nel file di configurazione del server non va utilizzata la direttiva <code>AllowUsers</code>. | ||
Per un'installazione di base di SSH si veda ad esempio la guida [[OpenSSH: configurazione | Per un'installazione di base di SSH si veda ad esempio la guida [[OpenSSH: file di configurazione]]. | ||
== Test di funzionamento == | == Test di funzionamento == | ||
Riga 64: | Riga 96: | ||
== Approfondimenti == | == Approfondimenti == | ||
* [http://www.debian.org/doc/manuals/reference/ | * [http://www.debian.org/doc/manuals/reference/ch06.it.html#_the_remote_access_server_and_utility_ssh La guida Debian: SSH] | ||
[[Categoria: | |||
[[Categoria:SSH server e amministrazione remota]] |
contributi