Ssh e autenticazione tramite chiavi: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
m (→‎Approfondimenti: titolo link)
(da cancellare)
 
(36 versioni intermedie di 13 utenti non mostrate)
Riga 1: Riga 1:
=Introduzione=
{{Da cancellare | guida doppione perché il contenuto è già coperto nella guida principale su [[SSH]]}}
== 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.


Questa tabella cerca di riassumere le alternative libere a diffusi programmi proprietari, a prescindere dal sistema operativo sul quale essi girano.
Un modo sicuro per ''aggirare'' questo problema è basato sull'autenticazione tramite una coppia di chiavi (privata e pubblica).


Per rendere la pagina di una qualche utilit� � necessario il contributo di molte persone, quindi tutti sono invitati a partecipare mettettendo link a nuove applicazioni oppure scrivendo una breve pagina riassuntiva dedicata ad una particolare programma libero.
Il concetto alla base di questo sistema di autenticazione è semplice: si demanda il compito di verificare i dati di autenticazione direttamente alle chiavi ssh, rimuovendo la richiesta della password (meno volte viene digitata, più è difficile che qualche utente male intenzionato la riesca a capire) che viene, eventualmente, sostituita dalla richiesta di una passphrase di sblocco della chiave.


Inizialmente la priorit� sar� popolare la tabella, quindi metteremo semplicemente un link alla home page dei progetti liberi. Si potr� poi affiancare al link della homepage un link '''scheda''' che punta all'eventuale pagina del wiki dedicata a quel programma.
== Configurazione ==
=== Generazione delle chiavi ===
Per poter gestire questo processo di autenticazione è necessario generare una coppia di chiavi (pubblica e privata). Il comando è semplice:
<pre>
$ ssh-keygen
</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]].


Per ogni proposta, suggerimento o critica usate la pagina di discussione o postate sul forum.
Durante la generazione delle chiavi ci viene chiesto dove salvarle (normalmente è <code>~/.ssh/id_rsa</code>): il valore di default va bene.


=Tabella Software=
Per quanto riguarda la passphrase richiesta, sempre durante la generazione delle chiavi, ci sono due opzioni, entrambe con pregi e difetti:
{| {{Prettytable}} width="100%"
* 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)
| align="center" | '''Descrizione'''
* 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.
| align="center" | '''Closed Source'''
| align="center" | '''Free Software'''


|-
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:
| align="center" colspan="3" |
<pre>
===Network===
$ ssh-add ~/.ssh/id_rsa
|-
</pre>
| align="center" |
====Browser Web====


|[http://www.microsoft.it Internet Explorer] {{windows}} {{mac}}
=== 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).


[http://www.opera.com Opera] {{windows}} {{mac}} {{linux}}
Prendiamo, ad esempio, la seguente chiave pubblica (contenuta nel file <code>~/.ssh/id_rsa.pub</code> presente sul client):
<pre>
ssh-rsa AAAAB3NzaC1kc3MAAACBAPe/PbwWkXR7qI8hcbxLRUS0/fIul0eUiSvu/hnXZXZDIZjVi1VlIbipff6n7Z6vF0hJRg6l
[cut]
gjLLTka0/QF8SP4JYFKs0Iasdju6y1slmx9IdzQt+hvMqF2+PPchCWcyBP3S5Zje4T6Az1MgrvuwCXIW6oUZXCA== user@host
</pre>


|[http://www.mozilla.org/products/firefox/ Firefox] {{linux}} {{windows}} {{mac}} - {{deb}}
Copiamo il contenuto nel file <code>~/.ssh/authorized_keys</code> presente sul server, nella home relativa all'utente usato su quella macchina e salviamo il file.


[http://www.kde.org Konqueror] {{linux}} - {{deb}}
=== Copia automatica della chiave pubblica ===
Alternativamente, è possibile usare lo script ''ssh-copy-id'' in questo modo dal client:


[http://www.gnome.org/projects/epiphany/ Epiphany] {{linux}} - {{deb}}
<pre>
$ ssh-copy-id -i ~/.ssh/id_rsa.pub utente@server
</pre>
oppure ancora utilizzando <code>scp</code>:
<pre>
$ 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>


[http://www.mozilla.org/ Mozilla] {{linux}} {{windows}} {{mac}} - {{deb}}
== 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 i campi:
<pre>
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.}}


[http://www.mozilla.org/products/camino/ Camino] {{mac}}
'''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: file di configurazione]].


|-
== Test di funzionamento ==
| align="center" |
Se tutto è stato eseguito correttamente, sarà possibile connettersi al server tramite un semplice:
====Client Email====
<pre>
$ ssh utente@server
</pre>


| Outlook {{windows}}
Se è stata inserita, durante la generazione delle chiavi, una passphrase, sarà necessario usarla per completare il processo di autenticazione, altrimenti apparirà direttamente il prompt della macchina remota.


Outlook Express {{windows}}
== Approfondimenti ==
* [http://www.debian.org/doc/manuals/reference/ch06.it.html#_the_remote_access_server_and_utility_ssh La guida Debian: SSH]


[http://www.eudora.com/ Eudora] {{windows}}
[[Categoria:SSH server e amministrazione remota]]
 
| [http://www.gnome.org/projects/evolution/ Evolution] -- [[ Software:evolution | scheda ]] {{linux}} - {{deb}}
 
[http://www.mozilla.org/projects/thunderbird/ Thunderbird] {{linux}} {{windows}} {{mac}} - {{deb}}
 
[http://kmail.kde.org/ Kmail] {{linux}} - {{deb}}
 
[http://sylpheed.good-day.net/en/ Sylpheed ] {{linux}} {{windows}} - {{deb}}
 
|-
| align="center" |
 
====Chat====
 
| [http://www.mirc.com/ Mirc] {{windows}}
 
[http://www.hydrairc.com/ HydraIRC] {{windows}} ''[http://www.hydrairc.com/index.php?page=developers non opensource!].''
 
| [http://konversation.kde.org/ Konversation] -- [[Software:konversation | scheda]] {{linux}} - {{deb}}
 
[http://www.xchat.org/ Xchat] {{linux}} {{windows}}  - {{deb}}
 
[http://gaim.sourceforge.net/ Gaim]  {{linux}} {{windows}}  - {{deb}}
 
[http://packages.debian.org/stable/net/ksirc Ksirc]  {{linux}}  - {{deb}}
 
[http://www.kvirc.net/ Kvirk]  {{linux}}  - {{deb}}
 
 
|-
 
| align="center" |
 
====Firewall====
| [http://www.agnitum.com/products/outpost/index.php OutPost] {{windows}}
 
[http://www.zonelabs.com ZoneAlarm] {{windows}}
 
| [http://www.netfilter.org/ iptables] {{linux}} - {{deb}}
 
Frontend per iptables:
 
[http://www.simonzone.com/software/guarddog/ Guarddog] {{linux}} - {{deb}}
 
[http://kmyfirewall.sourceforge.net/ kmyfirewall] {{linux}} - {{deb}}
 
[http://venom.oltrelinux.com/ knetfilter] {{linux}} - {{deb}}
 
[http://www.fs-security.com/ Firestarter] {{linux}} - {{deb}}
 
|-
| align="center" |
 
====Ftp Client====
| [http://www.cuteftp.com/ CuteFTP] {{windows}}
 
| [http://filezilla.sourceforge.net/ Filezilla] {{windows}} 
 
[http://gftp.seul.org/ gftp] {{linux}} {{deb}}
 
[http://kbear.sourceforge.net/ kbear] {{linux}} {{deb}}
 
[http://kftpgrabber.sourceforge.net/ kftpgrabber] {{linux}} {{udeb|http://repos.knio.it}}
 
 
|-
| align="center" |
 
====Instant Messaging====
| [http://www.icq.com/ Icq] {{windows}} {{mac}}
 
[http://www.msn.it Msn] {{windows}}
 
[http://www.mercury.to Mercury] {{linux}} {{windows}} {{mac}}
 
| [http://kopete.kde.org/ Kopete] {{linux}} - {{deb}}
 
[http://gaim.sourceforge.net/ Gaim] {{linux}} {{windows}} {{mac}} - {{deb}}
 
[http://amsn.sourceforge.net/ Amsn] {{linux}} {{windows}} {{mac}} - {{deb}}
 
[http://sim-icq.sourceforge.net/ Sim] {{linux}} - {{deb}}
 
[http://www.miranda-im.org/ Miranda] {{windows}}
 
|-
| align="center" |
 
====News Reader====
 
| [http://www.microsoft.com Microsoft Outlook] {{windows}} {{mac}}
 
| [http://pan.rebelbase.com/ Pan] {{linux}} {{mac}} {{windows}} - {{deb}}
 
[http://knode.sourceforge.net/ Knode] {{linux}} - {{deb}}
 
[http://sylpheed.good-day.net/en/ Sylpheed] {{linux}} {{windows}} - {{deb}}
 
|-
| align="center" |
 
====Voip====
 
|[http://www.skype.com/ Skype] {{linux}} {{Mac}} {{windows}}
 
[http://www.gizmoproject.com/ Gizmo] {{linux}} {{mac}} {{windows}}
 
|[http://www.openwengo.com/ OpenWengo] {{linux}} {{Mac}} {{windows}} - {{deb}}
 
[http://www.gnomemeeting.org/ Ekiga (ex Gnomemeeting)] {{linux}} {{windows}} - {{deb}}
 
[http://www.twinklephone.com/ Twinkle] {{linux}} - {{deb}}
 
|-
| align="center" colspan="3" |
 
===Multimedia===
|-
| align="center" colspan="3" |
====Audio====
|-
| align="center" |
=====Player=====
| [http://www.winamp.com/ Winamp] {{windows}}
 
| [http://coolplayer.sourceforge.net/ CoolPlayer] {{windows}}
 
[http://www.xmms.org/ Xmms] {{linux}} - {{deb}}
 
[http://www.sosdg.org/~larne/w/BMP_Homepage Beep Media Player] {{linux}} - {{deb}}
 
[http://www.zinf.org/ Zinf] {{linux}} - {{windows}} - {{deb}}
 
[http://www.rhythmbox.org Rhythmbox] {{linux}} - {{deb}}
 
|-
| align="center" |
 
=====Gestione Raccolte Musicali=====
 
| [http://www.apple.com/itunes/ iTunes] {{mac}} {{windows}}
 
[http://www.microsoft.com/windows/windowsmedia/ Windows Media Player] {{windows}}
 
| [http://www.gnome.org/projects/rhythmbox/ Rhythmbox] (player di default di Gnome) {{linux}} - {{deb}}
 
[http://amarok.kde.org/ Amarok] {{linux}} - {{deb}}
 
[http://www.sacredchao.net/quodlibet Quod Libet] {{linux}} - {{deb}}
 
[http://muine.gooeylinux.org/ Muine] {{linux}} - {{deb}}
 
|-
| align="center" |
 
=====Gestione dei Tag=====
 
| [http://www.microsoft.com/windows/windowsmedia/ Windows Media Player] {{windows}}
 
| [http://www.sacredchao.net/quodlibet Ex Falso] (parte di Quod Libet) {{linux}} - {{deb}}
 
[http://pwp.netcabo.pt/paol/tagtool/ Tagtool] {{linux}} - {{deb}}
 
[http://easytag.sourceforge.net/ Easytag] {{linux}} {{windows}} - {{deb}}
 
|-
| align="center" colspan="3" |
 
====Video====
 
|-
| align="center" |
 
=====Player=====
 
| [http://www.microsoft.com/windows/windowsmedia/ Windows Media Player] {{windows}}
 
| [http://www.videolan.org/vlc/ VLC] {{linux}} {{mac}} {{windows}} ''(e molti altri)''
 
[http://xinehq.de/ Xine] {{linux}} - {{deb}}
 
[http://www.mplayerhq.hu/homepage/design7/news.html MPlayer] {{linux}} {{mac}} {{windows}} - {{udeb|http://debian.video.free.fr/}}
 
[http://www.gnome.org/projects/totem/ Totem] {{linux}} - {{deb}}
 
|-
| align="center" colspan="3" |
====Grafica====
|-
| align="center" |
 
=====Fotoritocco=====
 
| [http://www.it.corel.com/servlet/Satellite?pagename=Corel3It/Products/Display&pfid=1047024809736&pid=1047025538464 Paint Shop Pro] {{windows}}
 
[http://www.adobe.it/products/photoshop/main.html Adobe PhotoShop] {{windows}} - {{mac}}
 
| [http://www.gimp.org/ GIMP] {{windows}} - {{linux}} - {{mac}} - {{deb}}
 
|-
| align="center" |
 
=====Gestione Foto=====
 
| [http://picasa.google.com/index.html Picasa] {{windows}}
 
[http://www.apple.com/ilife/iphoto/ iPhoto] {{mac}}
 
| [http://gthumb.sourceforge.net/ Gthumb] {{linux}} - {{deb}}
 
[http://www.digikam.org/ Digikam] {{linux}} - {{deb}}
 
[http://gqview.sourceforge.net/ GQview] {{linux}} - {{deb}}
 
[http://www.gnome.org/projects/f-spot/ F-Spot] {{linux}} - {{deb}}
 
|-
| align="center" |
=====Vettoriale=====
 
| [http://www.it.corel.com/servlet/Satellite?pagename=Corel3It/Products/Display&pfid=1047024809679&pid=1047023175176 CorelDRAW] {{windows}}
 
| [http://www.sodipodi.com/ Sodipodi] {{windows}} - {{linux}} - {{deb}}
 
[http://www.inkscape.org/ InkScape] {{windows}} - {{linux}} - {{mac}} - {{deb}}
 
 
|-
| align="center" colspan="3" |
===Office===
 
|-
| align="center" |
====Suite Office====
 
| [http://office.microsoft.com/ Microsoft Office] {{windows}} {{mac}}
 
[http://www.software602.com/ 602 PC Suite] {{windows}}
 
[http://www.sun.com/software/star/staroffice/ StarOffice] {{linux}} {{windows}}
 
|
 
[http://www.openoffice.org OpenOffice.Org] {{linux}} {{windows}} {{mac}} - {{deb}}
 
[http://www.koffice.org Koffice] {{linux}} - {{deb}}
 
[http://www.gnome.org/gnome-office/ GnomeOffice] {{linux}} {{windows}} {{mac}} - {{deb}}
 
|-
| align="center" |
====Editor di Testi [http://it.wikipedia.org/wiki/WYSIWYG WYSIWYG]====
| [http://office.microsoft.com/ Microsoft Word] {{windows}} {{mac}}
 
[http://www.microsoft.com/products/works/default.mspx Microsoft Works] {{windows}}
 
| [http://www.abisource.com/ Abiword] {{linux}} {{windows}} {{mac}} - {{deb}}
 
[http://www.koffice.org Kword] (Parte di Koffice) {{linux}} - {{deb}}
 
[http://www.openoffice.org OpenOfficeWriter] (Parte di OpenOffice.Org) {{linux}} {{windows}} {{mac}} - {{deb}}
 
|-
| align="center" |
====Editor di Testi [http://it.wikipedia.org/wiki/Desktop_Publishing DTP]====
| [http://www.adobe.com/products/pagemaker/main.html Adobe PageMaker] {{windows}} {{mac}}
 
[http://www.quark.com/about/contact/international_web_sites.html QuarkXPress] {{windows}} {{mac}}
 
| [http://www.lyx.org/ Lyx] {{linux}} {{mac}} {{windows}} - {{deb}}
 
[http://www.scribus.org.uk/ Scribus] {{linux}} {{mac}} {{windows}} - {{deb}}
 
[http://www.stacken.kth.se/project/pptout/ Passepartout] {{linux}} {{mac}} - {{deb}}
 
TeX/LaTeX {{linux}} {{windows}} {{mac}} - {{deb}} [http://www.guit.sssup.it/ GUIT]
 
|-
| align="center" |
 
====Editor di Testi orientati<br> alla programazione====
|
 
|[http://www.kde-apps.org/content/show.php?content=9901 KWrite] (default di KDE) {{linux}} - {{deb}}
 
[http://www.gnu.org/software/emacs/emacs.html Emacs] {{linux}} {{windows}} {{mac}} e molti altri - {{deb}}
 
[http://www.vim.org/ Vim] {{linux}} {{windows}} {{mac}} e molti altri - {{deb}}
 
[http://kate.kde.org/ Kate] {{linux}} - {{deb}}
 
[http://www.kdevelop.org/ KDevelop] {{linux}} - {{deb}}
 
[http://kile.sourceforge.net/ Kile] {{linux}} - {{deb}}
 
|-
| align="center" |
 
====Fogli di Calcolo====
| [http://office.microsoft.com/ Microsoft Excel] {{windows}} {{mac}}
 
[http://www.microsoft.com/products/works/default.mspx Microsoft Works] {{windows}}
 
| [http://www.gnome.org/projects/gnumeric/ Gnumeric] {{linux}} {{windows}} {{mac}} - {{deb}}
 
[http://www.koffice.org Kspread] (Parte di Koffice) {{linux}} - {{deb}}
 
[http://www.openoffice.org OpenOfficeCalc] {{linux}} {{windows}} {{mac}} - {{deb}}
 
|-
| align="center" colspan="3" |
===Programmi Scientifici===
 
|-
| align="center" |
====Matlab====
 
| [http://www.mathworks.com/ Matlab] {{linux}} {{windows}} {{mac}}
 
| [http://www.octave.org/ Octave] {{linux}} {{windows}} {{mac}} - {{deb}}
 
[http://scilabsoft.inria.fr Scilab] {{linux}} {{windows}} {{mac}} - {{deb}}
 
|-
| align="center" colspan="3" |
=== Utilita'===
|-
| align="center" |
====Backup====
| [http://www.microsoft.com Windows Backup] {{windows}}
 
[http://www3.ca.com/solutions/Product.aspx?ID=4536 ARCserve Backup] {{windows}}
 
| [http://www.bacula.org Bacula] {{linux}} {{windows}} {{mac}} -  {{deb}}
 
[http://jr.falleri.free.fr/keep Keep] {{linux}} - {{udeb|http://repos.knio.it}}
 
|-
| align="center" |
====File Manager====
| Explorer {{windows}}
 
[http://www.ghisler.com/ Total Commander] {{windows}}
 
| [http://www.gnome.org/projects/nautilus/ Nautilus] (default di Gnome) {{linux}} - {{deb}}
 
[http://www.konqueror.org/ Konqueror] (default di KDE) {{linux}} - {{deb}}
 
[http://rox.sourceforge.net/phpwiki/index.php/ROX-Filer ROX-filer] {{linux}} - {{deb}}
 
[http://en.wikipedia.org/wiki/Gentoo_file_manager Gentoo] {{linux}} - {{deb}}
 
[http://roland65.free.fr/xfe/ Xfe] {{linux}} - {{deb}}
 
[http://krusader.sourceforge.net/ Krusader] {{linux}} - {{deb}}
 
|-
| align="center" |
====Masterizzazione====
| [http://www.nero.com/ita/index.html Nero Burning Room] {{windows}} {{linux}}
 
| [http://www.k3b.org/ K3b] {{linux}} - {{deb}}
 
[http://gnomebaker.sourceforge.net/v2/ Gnomebaker] {{linux}} - {{deb}}
 
[http://graveman.tuxfamily.org/index.php?l=e Graveman] {{linux}} - {{deb}}
 
[http://www.xcdroast.org/ X-CD-roast] {{linux}} - {{deb}}
 
|-
| align="center" |
 
====Pulizia del Sistema====
| [http://www.symantecstore.com/antivirus/norton-cleansweep-a.htm CleanSweep] {{windows}}
 
| [http://www.kde-apps.org/content/show.php?content=28631 Kleansweep] {{linux}} {{udeb|http://repos.knio.it}}
|}
 
==Legenda==
Nella tabella sono presenti alcuni simboli, per identificare quali sistemi operativi sono supportati dalle applicazioni:
: {{linux}} Indica che il programma e' compatibile con Linux.
: {{windows}} Indica che il programma e' compatibile con Windows.
: {{mac}} Indica che il programma e' compatibile con MacOs.
 
Sono, inoltre, presenti delle swirl, che indicano la presenza dei programmi in formato .deb.
: {{deb}} Indica che il programma e' stato pacchettizzato ed e' presente nei repository ufficiale Debian.
: http://guide.debianizzati.org/images/7/7b/Swirl_gray.png Indica che il programma e' stato pacchettizzato, ma e' presente in un repository non ufficiale. E' inoltre presente un link al repository in cui si trova il pacchetto.

Versione attuale delle 11:06, 26 set 2015

Trash 01.png Attenzione. Questa guida è stata proposta per la cancellazione in quanto contenente materiale potenzialmente dannoso, inutile o fuorviante.
Motivo: guida doppione perché il contenuto è già coperto nella guida principale su SSH


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.

Un modo sicuro per aggirare questo problema è basato sull'autenticazione tramite una coppia di chiavi (privata e pubblica).

Il concetto alla base di questo sistema di autenticazione è semplice: si demanda il compito di verificare i dati di autenticazione direttamente alle chiavi ssh, rimuovendo la richiesta della password (meno volte viene digitata, più è difficile che qualche utente male intenzionato la riesca a capire) che viene, eventualmente, sostituita dalla richiesta di una passphrase di sblocco della chiave.

Configurazione

Generazione delle chiavi

Per poter gestire questo processo di autenticazione è necessario generare una coppia di chiavi (pubblica e privata). Il comando è semplice:

$ ssh-keygen 

Si può voler scegliere una lunghezza maggiore (default 2048) con

$ ssh-keygen -b 4096

L'uso dell'opzione -t per indicare il tipo di chiave è fortemente sconsigliato.

Durante la generazione delle chiavi ci viene chiesto dove salvarle (normalmente è ~/.ssh/id_rsa): 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:

  • 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.

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 ssh-agent per mantenere in cache la passphrase per la sessione corrente:

$ ssh-add ~/.ssh/id_rsa

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).

Prendiamo, ad esempio, la seguente chiave pubblica (contenuta nel file ~/.ssh/id_rsa.pub presente sul client):

ssh-rsa AAAAB3NzaC1kc3MAAACBAPe/PbwWkXR7qI8hcbxLRUS0/fIul0eUiSvu/hnXZXZDIZjVi1VlIbipff6n7Z6vF0hJRg6l
[cut]
gjLLTka0/QF8SP4JYFKs0Iasdju6y1slmx9IdzQt+hvMqF2+PPchCWcyBP3S5Zje4T6Az1MgrvuwCXIW6oUZXCA== user@host

Copiamo il contenuto nel file ~/.ssh/authorized_keys presente sul server, nella home relativa all'utente usato su quella macchina e salviamo il file.

Copia automatica della chiave pubblica

Alternativamente, è possibile usare lo script ssh-copy-id in questo modo dal client:

$ ssh-copy-id -i ~/.ssh/id_rsa.pub utente@server

oppure ancora utilizzando scp:

$ scp -P <porta> ~/.ssh/id_rsa.pub <username>@<ip del server>:~/.ssh/authorized_keys

I permessi sulla directory remota ~/.ssh devono essere settati a:

drwxr-xr-x 2 utente utente  4096 30 dic 00:31 .ssh

mentre sul file ~/.ssh/authorized_keys:

-rw-r--r-- 1 utente utente  610 30 dic 00:17 authorized_keys

Configurazione del server

Sul server, in cui deve essere già presente un'installazione di base funzionante di SSH, aggiornate il file /etc/ssh/sshd_config e settate i campi:

HostbasedAuthentication yes
RSAAuthentication yes
PubkeyAuthentication yes

Riavviate il servizio:

# /etc/init.d/ssh restart

e verificate di essere in grado di autenticarvi tramite chiave:

$ ssh utente@server
Info.png Consiglio:
se non volete permettere il login tramite password, ma solo attraverso public key, settate anche le opzioni:
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no

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 AllowUsers.

Per un'installazione di base di SSH si veda ad esempio la guida OpenSSH: file di configurazione.

Test di funzionamento

Se tutto è stato eseguito correttamente, sarà possibile connettersi al server tramite un semplice:

$ ssh utente@server

Se è stata inserita, durante la generazione delle chiavi, una passphrase, sarà necessario usarla per completare il processo di autenticazione, altrimenti apparirà direttamente il prompt della macchina remota.

Approfondimenti