Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "InternetRete/DesktopRemoto/OpenSsh"
Differenze tra le versioni 9 e 14 (in 5 versioni)
Versione 9 del 05/11/2006 20.13.59
Dimensione: 9850
Autore: DavideLuigi
Commento:
Versione 14 del 22/03/2007 13.10.44
Dimensione: 9883
Autore: DavideLuigi
Commento: Finito l'"ammodernamento" della pagina
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 6: Linea 6:
''OpenSSH è una versione libera del protocollo SSH, suite dei tools per la connettività di rete, che incrementa il numero di persone che fanno affidamento su di esso. Molti utenti che utilizzano '''`telnet`''', '''`rlogin`''', '''`ftp`''' e altri programmi simili forse non sanno che la loro password viene trasmessa attraverso la rete non criptata. OpenSSH cripta tutto il traffico (password compresa) per eliminare a tutti gli effetti l'ascolto passivo, l'hijacking della connessione e altri attacchi a livello di rete. In più, OpenSSH fornisce una miriade di possibilità di tunneling sicuro, così come una varietà di metodi di autenticazione.'' -- da [http://www.openssh.com/it/index.html OpenSSH] OpenSSH è un insieme di programmi che permettono, in tutta sicurezza, di svolgere diverse operazioni:
 * controllare un computer remoto(tramite terminale)
 * copiare file da un computer remoto al computer locale e viceversa
 * criptare qualunque traffico di dati tra computer locale e computer remoto tramite tunneling
OpenSSH sostituisce i vecchi e insicuri programmi ''telnet'', ''rlogin'' e ''ftp'' (questi programmi sono insicuri perchè trasmettono dati e password in chiaro, rendendone semplice il furto)
Linea 8: Linea 12:
= Installazione di ssh-server = = Preparazione dei computer =
Linea 10: Linea 14:
Se volete usufruire di una connessione sicura tra le vostre macchine (anche una macchina con MS Windows utilizzante '''`Putty`'''), è necessario installare un server per collegarsi. Ubuntu utilizza il server openssh-server. Per installarlo, in un terminale inserire: È necessario disporre di un server ssh su ogni computer al quale ci si vuole connettere (chiamato in seguito "computer remoto"), e di un client ssh su ogni computer dal quale si vuole avviare la connessione (chiamato in seguito "computer locale"). Se ad esempio si dispone di due computer e si vuole che ognuno dei due possa connettersi all'altro tramite ssh, ognuno dei due computer dovrà avere sia il server che il client.

Per avere il server ssh su ubuntu, è sufficiente installare il pacchetto ''openssh-server'', che si trova già nei repository standard e può essere installato tramite '''Synaptic''', o tramite terminale con il seguente comando:
Linea 16: Linea 22:
Questo installerà il server ssh-server. Il client ssh (contenuto nel pacchetto ''openssh-client'') è installato in ubuntu in modo predefinito.
Linea 18: Linea 24:
= Copiare file con ssh = = Usare Nautilus con computer remoti in maniera sicura =
Linea 20: Linea 26:
Per copiare un file da un computer ad un altro con '''`ssh`''' si deve usare il comando ''scp''. Il comando dovrebbe essere come il seguente. '''Nautilus''' può visualizzare, editare e copiare file presenti su un computer remoto in tutta sicurezza, grazie a '''OpenSSH'''. E' sufficiente aprire Nautilus e inserire un indirizzo così composto:
Linea 22: Linea 29:
scp <file> <nomeutente>@<indirizzoIP>:<DirectoryDestinazione> ssh://<nomeutente>@<indirizzoIP>
Linea 25: Linea 32:
oppure, in termini più pratici, se si sta copiando un file da un computer a un altro: per vedere il filesystem di un computer remoto come se fosse locale(ricordarsi di sostituire <nomeutente> e <indirizzoIP> in maniera adeguata).

A questo punto è possibile svolgere tutte le operazioni che si svolgono normalmente con nautilus(copiare file da remoto a locale e viceversa, cancellare file remoti, eccetera).

= Copiare file da un computer a un altro tramite terminale locale =

Per copiare un file dal nostro computer locale a un computer remoto(e viceversa) attraverso il terminale, '''OpenSSH''' mette a disposizione il comando ''scp''.

Nel primo caso, il comando dovrebbe seguire questo schema:
{{{
scp <percorsoFileLocale> <nomeUtenteRemoto>@<indirizzoIP>:<PercorsoDestinazioneRemota>
}}}

Per esempio:
Linea 28: Linea 48:
scp file.txt mario@192.168.1.1:/home/mario scp fileDaCopiare.txt mario@192.168.1.1:/home/mario/fileCopiato.txt
Linea 31: Linea 51:
(In questo caso sarà copiato il file `file.txt` da un computer locale verso il computer remoto «`mario@192.168.1.1`» nella directory `/home/mario`). Ci si deve perciò assicurare di aver incluso il <file>, il <nomeutente> del computer a cui ci si stà connettendo , l ' <indirizzo IP> e la <Directory di destinazione> dove il file sarà copiato. prenderà il file `fileDaCopiare.txt`, presente nella directory corrente del computer locale, e lo copierà nella posizione `/home/mario/fileCopiato.txt` (notare che abbiamo anche cambiato il nome del file, ma non è necessario) del computer remoto identificato dall'indirizzo ip `192.168.1.1` , usando l'utente `mario` sul computer remoto(utente di cui dobbiamo conoscere la password).
Linea 33: Linea 53:
È possibile anche copiare un file da un computer remoto verso il disco fisso locale: Per copiare un file da un computer remoto al computer locale, basta seguire lo schema inverso:
Linea 35: Linea 55:
scp mario@192.168.1.1:/home/mario/file.txt . scp <nomeUtenteRemoto>@<indirizzoIP>:<PercorsoFileRemoto> <PercorsoDestinazioneLocale>
Linea 38: Linea 58:
Il '.' finale (l'ultimo punto) significa che il file sarà copiato nella directory corrente. Il file naturalmente potrà essere anche rinominato e questo sarà fatto durante il trasferimento.

[[Immagine(Icone/Piccole/note.png,,left)]] Non si possono spostare file tra due computer remoti. La sorgente o la destinazione devono essere file locali.[[BR]][[BR]]

= Navigare con Nautilus attraverso ssh =

Usando '''`nautilus`''' si può avere accesso a computer remoti per navigare, editare e copiare. Aprire '''`nautilus`''' (per esempio selezionando ''`Risorse -> Cartella Home`'') e successivamente premere «`CTRL+L`», quindi inserire il seguente indirizzo:
Per esempio:
Linea 47: Linea 60:
ssh://<nomeutente>@<nomeHost> scp mario@192.168.1.1:/home/mario/fileDaCopiare.txt .
Linea 50: Linea 63:
(sostituire <nomeutente> e <nomeHost> in maniera adeguata) Copierà il file remoto identificato dal percorso `/home/mario/fileDaCopiare.txt` nella directory corrente (identificata dal punto `.` ), senza rinominarlo.
Linea 52: Linea 65:
La copia dei file può essere fatta selezionando e trascinando il file in un'altra finestra di '''`nautilus`''', come se si fosse all'interno del proprio file-system locale. [[Immagine(Icone/Piccole/note.png,,left)]] Con '''scp''' non si possono copiare file tra due computer remoti. La sorgente o la destinazione devono essere file locali.[[BR]][[BR]]
Linea 54: Linea 67:
= Collegarsi a un computer remoto con ssh =
Linea 56: Linea 68:
Per collegarsi a un computer remoto usando ssh si deve digitare qualcosa del tipo: = Controllare un computer remoto tramite terminale=

Per accedere alla linea di comando di un computer remoto, '''OpenSSH''' fornisce il comando '''ssh'''. È sufficiente digitare il comando:
Linea 68: Linea 82:
[[Immagine(Icone/Piccole/note.png,,left)]] È possibile utilizzare l'hostname (se conosciuto dal sistema in `/etc/hosts`) al posto dell'indirizzo IP.[[BR]][[BR]] Grazie a questo comando si disporrà in locale del computer remoto, tutto ciò che faremo in questo terminale avverrà sul computer remoto(e non sul computer locale).

[[Immagine(Icone/Piccole/note.png,,left)]] Se il computer remoto ha ubuntu come sistema operativo, risulterà impossibile connettersi ad esso come utente root, perchè in ubuntu l'utente root non è abilitato. Se si desidera svolgere compiti amministrativi su un computer remoto con ubuntu, connettersi prima come utente normale, quindi usare sudo per dare comandi con privilegi amministrativi; in alternativa, abilitare l'utente root sul computer remoto.
Linea 72: Linea 88:
Precedentemente è stata utilizzata l'autenticazione tipica con username e password. Tuttavia se qualcuno ha "indovinato" o è venuto in possesso della vostra password, la sicurezza può essere compromessa. Da tempo '''`ssh`''' offre un'autenticazione con chiave pubblica. Precedentemente è stata utilizzata l'autenticazione tipica con username e password. Tuttavia se qualcuno è venuto in possesso della password dell'utente del computer remoto, vi si potrà connettere dall'esterno a nostra insaputa, compromettendone la sicurezza. Da tempo '''OpenSSH''' è in grado di prevenire il problema, grazie all'autenticazione con chiave pubblica.
Linea 74: Linea 90:
'''`Ssh`''' usa chiavi di accesso private e pubbliche al posto di una semplice password. '''OpenSSH''' può usare chiavi di accesso private e pubbliche al posto della password utente remoto.
Linea 76: Linea 92:
A meno che non si abbia già una chiave privata, la prima cosa da fare è crearne una. La prima cosa da fare è creare(se non se ne ha già una) la propria chiave privata sul computer locale.
Linea 83: Linea 99:
Sarà chiesto dove salvare la chiave privata (si può accettare la posizione predefinita) e di scegliere una "passphrase". La passphrase è usata per criptare la chiave privata. Chiunque ottenga l'accesso alla vostra chiave privata (non protetta) avrà i vostri permessi da altri calcolatori. Si consiglia di pensare bene ad una 'reale' buona password. Verrà chiesto dove salvare la chiave privata (si consiglia di accettare la posizione predefinita ~/.ssh/id_dsa) e di scegliere una "passphrase". La passphrase è una nuova password, usata per criptare la chiave privata. Ogni qualvolta servirà la nostra chiave privata, bisognerà prima fornire la passphrase(per decriptare la chiave privata).
Linea 85: Linea 101:
Ora per avere accesso ad altri computer, questi devono "fidarsi" della vostra chiave pubblica. La chiave pubblica è stata creata assieme alla chiave privata ed è generalmente localizzata in {{{~/.ssh/id_dsa.pub}}}. [[Immagine(Icone/Piccole/note.png,,left)]] Si può anche scegliere di non creare la passphrase(basta non inserirla e premere invio) e quindi non criptare la chiave privata, ma sarebbe una pessima scelta, in quanto un cracker che venisse in possesso della nostra chiave privata in chiaro, avrebbe facile accesso a tutti i servizi cui noi accediamo tramite la suddetta chiave; al contrario, con una chiave privata criptata mediante passphrase, l'eventuale cracker si ritroverebbe in mano un inutile ammasso di caratteri senza senso(gli serve la passphrase per decifrarla).[[BR]][[BR]]
Linea 87: Linea 103:
L'utente target (verso cui ci si connette) deve avere questa chiave (è una linea dei caratteri ASCII) nel relativo file di autorizzazione di chiavi pubbliche situato in {{{~/.ssh/authorized_keys2}}} del computer target. Così si deve o copiare ed incollare la linea di caratteri ASCII nel file authorized_keys2 oppure usare il comando `ssh-copy-id` come nell'esempio Insieme alla chiave privata viene creata anche la chiave pubblica(localizzata in `~/.ssh/id_dsa.pub` sul computer locale), che è quella che possiamo dare liberamente in giro; in questo caso specifico, dobbiamo dare la nostra chiave pubblica al nostro computer remoto per garantirci la sua "fiducia", cioè l'accesso tramite ssh.

L'utente che usiamo sul computer remoto deve avere la nostra chiave pubblica nel relativo file di autorizzazione, cioè il file `~/.ssh/authorized_keys2` del computer remoto; per lo scopo, '''OpenSSH''' mette a disposizione il comando `ssh-copy-id`, da usare come nell'esempio
Linea 89: Linea 107:
ssh-copy-id root@fileserver01 ssh-copy-id <nomeutente>@<indirizzoIP>
Linea 92: Linea 110:
Verrà chiesta la password di root di quel computer. Se l'autenticazione con password è disabilitata si deve copiare e incollare la chiave con un altro mezzo.
Linea 94: Linea 111:
Successivamente all'aggiunta della chiave pubblica si sarà "affidabili". Digitare [[Immagine(Icone/Piccole/note.png,,left)]]Se l'autenticazione con password utente remoto è disabilitata, si deve copiare e incollare la chiave con un altro mezzo.[[BR]][[BR]][[BR]]

Grazie all'aggiunta della chiave pubblica sul computer remoto si diventerà "affidabili". Adesso, digitando
Linea 96: Linea 115:
ssh root@fileserver01 ssh <nomeutente>@<indirizzoIP>
Linea 99: Linea 118:
e successivamente sarà chiesta la "passphrase" e non la password. Si noti che la password e la passphrase sono cose diverse. La password è salvata in `/etc/password` del computer target, mentre la passphrase è usata per decriptare la vostra chiave privata sul vostro computer. verrà chiesta la nostra "passphrase" conservata in locale e non la password dell'utente remoto(salvata in `/etc/password` del computer remoto).
Linea 101: Linea 120:
Ricapitolando: l'attuale sicurezza di una autenticazione con chiave pubblica rispetto a una autenticazione con password è che per avere un accesso si necessita di avere: [[Immagine(Icone/Piccole/note.png,,left)]] Se si sceglie di usare solo l'autenticazione tramite chiave pubblica, per aumentare ulteriormente la sicurezza si può disabilitare l'autenticazione tramite password utente settando "Password``Authentication no" nel file `/etc/ssh/sshd_config` (è necessario riavviare il server ssh per rendere effettivo il cambiamento).[[BR]]
Linea 103: Linea 122:
 * la chiave privata (criptata) = Evitare l'inserimento della password a ogni connessione =
Linea 105: Linea 124:
 * la passphrase per decriptare la chiave privata Se si usa l'autenticazione a chiave pubblica, '''OpenSSH''' fornisce un metodo grazie al quale la passphrase verrà chiesta solo una volta durante tutta la sessione. Questa caratteristica è utile ad esempio a chi usa spesso il comando '''scp''', o agli amministratori di computer remoti, in quanto evita di dover reinserire la password ogni volta che si lancia un comando della suite OpenSSH.
Linea 107: Linea 126:
Così se non si scegliesse affatto la passphrase (il che è possibile -vedi dopo) si avrebbe meno sicurezza che usare solo una password. Il comando per aggiungere la propria passphrase al gestore delle identità è '''ssh-add''', usato semplicemente con:
{{{
ssh-add
}}}
verrà chiesta la passphrase, dopodiché la nostra chiave privata sarà disponibile senza ulteriori richieste.
Linea 109: Linea 132:
[[Immagine(Icone/Piccole/note.png,,left)]] Se ci si allontana dal proprio computer, altre persone potrebbero usarlo e sfruttare la chiave privata senza conoscere la passphrase. Se si teme una simile eventualità, si consiglia di bloccare lo schermo con la combinazione di tasti '''CTRL+ALT+L''' prima di allontanarsi.[[BR]][[BR]]
Linea 110: Linea 134:
[[Immagine(Icone/Piccole/note.png,,left)]] Per ragioni di sicurezza si può disabilitare l'autenticazione tramite password settando "Password``Authentication no" nel file `/etc/ssh/sshd_config`. Non si deve però poi dimenticare di riavviare '''`ssh-server`''' dopo il cambio di configurazione.[[BR]] = Permettere solo l'esecuzione di specifici comandi =
Linea 112: Linea 136:
= Limitare l'accesso a ssh =

Quando si usa ssh con autenticazione con chiave pubblica esiste un'altra interessante caretteristica. Il computer target può limitare l'esecuzione dei comandi impartiti dall'utente dal suo computer. Se per esempio si gestisce un CVS, si può aggiungere nel file `authorized_keys2` la seguente riga
Il computer remoto(quello con il server ssh installato) può scegliere di far eseguire solo alcuni comandi a chi vi si connette tramite autenticazione a chiave pubblica. Se per esempio si gestisce un CVS, si può aggiungere nel file `authorized_keys2` la seguente riga
Linea 119: Linea 141:
Questo permetterà l'esecuzione solo dei comandi per il CVS e nessun altro. In questo modo è permessa l'esecuzione esclusivamente dei comandi per il CVS e non di altri comandi.
Linea 121: Linea 143:
= Accesso automatico in batch scripts = = Connettersi a un server ssh usando Microsoft Windows =
Linea 123: Linea 145:
L'autenticazione con chiave pubblica può anche essere usata per automatizzare procedure che richiedono in genere la digitazione della password. Si immagini di voler copiare un file da un computer remoto ogni giorno a mezzanotte. Tutto quello di cui si ha bisogno è di stabilire 'un rapporto di fiducia' tra questi due computer.
Linea 125: Linea 146:
Creare un service account su un computer, creare un chiave (ssh-keygen -t dsa) e quando viene chiesta la passphrase premere INVIO. Questo lascerà la chiave privata sprotetta. Aggiungere la chiave pubblica ne file authorized_keys2 dell'altro computer (ssh-copy-id). Ora ci si può connetter con questa macchina senza che venga chiesta la passphrase. Aggiungere infine una chiamata ad ssh nel cronotab. Un computer con Microsoft Windows non può fare da server ssh, però può fare da client, basta scaricare un piccolo programma che si chiama [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Putty].
Linea 127: Linea 148:
[[Immagine(Icone/Piccole/warning.png,,left)]] '''Avere una chiave privata non protetta può compromettere la sicurezza. Gli hacker necessiterebbero solo di venire in possesso della chiave pubblica per connettersi liberamente al computer target.'''[[BR]][[BR]] = Connettersi a un server ssh usando un cellulare Symbian =
Linea 129: Linea 150:
= Usare ssh-agent =

Se si ha frequentemente bisogno di copiare file attraverso ssh o di avere accesso agli altri computer della propria rete (che è una cosa comune per un amministratore) si sarà felici di sapere se esiste un metodo che semplifichi la digitazione della passphrase. Attualmente un modo esiste ed è chiamato ssh-agent

Si necessità solo di digitare la propria passphrase dopo aver lanciato "ssh-add" e ogni volta che verra lanciato un sub-processo di ssh-agent la passphrase sarà ricordata.

Troppa teoria?!? bhe, non ci deve preoccupare dell'agent. La tua X session sta già lavorando automaticamente in una sessione di ssh agent.... Tutto ciò che si deve fare è lanciare "ssh-add" e digitare la passphrase. La prossima volta che si userà ssh per aver accesso ad un altro computer non si dovrà ridigitare la passphrase... Bello vero?!? :)

[[Immagine(Icone/Piccole/note.png,,left)]] Quando si lascia il proprio desktop per un po' di tempo si deve bloccare lo schermo. Altre persone potrebbero avere accesso ad altri computer dal tuo computer senza conoscere la passphrase.[[BR]][[BR]]

Se si vuole che venga chiesta la passphrase una volta dopo il login si può aggiungere una chiamata ad '''`ssh-agent`''' come in questo caso:

 * Selezionare ''`Sistema -> Preferenze -> Sessioni`''

 * Selezionare la scheda «''Avvio programmi''»

 * Fare clic su «''Aggiungi''»

 * Inserire «''`ssh-add`''» come comando

Dopo il prossimo login sarà richiesta la passphrase.

= Ssh non da Linux =

Per chi non lo sapesse '''`ssh`''' si può utilizzare anche su sistemi Windows, basta scaricare un piccolo programma che si chiama '''`Putty`''' [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html da qui].

'''`Putty`''', inoltre, è disponibile anche in una versione per i cellulari [http://s2putty.sourceforge.net/ Symbian].
'''`Putty`''' è disponibile anche in una [http://s2putty.sourceforge.net/ versione per i cellulari Symbian].
Linea 159: Linea 154:

CategoryInternet

Introduzione

OpenSSH è un insieme di programmi che permettono, in tutta sicurezza, di svolgere diverse operazioni:

  • controllare un computer remoto(tramite terminale)
  • copiare file da un computer remoto al computer locale e viceversa
  • criptare qualunque traffico di dati tra computer locale e computer remoto tramite tunneling

OpenSSH sostituisce i vecchi e insicuri programmi telnet, rlogin e ftp (questi programmi sono insicuri perchè trasmettono dati e password in chiaro, rendendone semplice il furto)

Preparazione dei computer

È necessario disporre di un server ssh su ogni computer al quale ci si vuole connettere (chiamato in seguito "computer remoto"), e di un client ssh su ogni computer dal quale si vuole avviare la connessione (chiamato in seguito "computer locale"). Se ad esempio si dispone di due computer e si vuole che ognuno dei due possa connettersi all'altro tramite ssh, ognuno dei due computer dovrà avere sia il server che il client.

Per avere il server ssh su ubuntu, è sufficiente installare il pacchetto openssh-server, che si trova già nei repository standard e può essere installato tramite Synaptic, o tramite terminale con il seguente comando:

sudo apt-get install openssh-server

Il client ssh (contenuto nel pacchetto openssh-client) è installato in ubuntu in modo predefinito.

Usare Nautilus con computer remoti in maniera sicura

Nautilus può visualizzare, editare e copiare file presenti su un computer remoto in tutta sicurezza, grazie a OpenSSH. E' sufficiente aprire Nautilus e inserire un indirizzo così composto:

ssh://<nomeutente>@<indirizzoIP>

per vedere il filesystem di un computer remoto come se fosse locale(ricordarsi di sostituire <nomeutente> e <indirizzoIP> in maniera adeguata).

A questo punto è possibile svolgere tutte le operazioni che si svolgono normalmente con nautilus(copiare file da remoto a locale e viceversa, cancellare file remoti, eccetera).

Copiare file da un computer a un altro tramite terminale locale

Per copiare un file dal nostro computer locale a un computer remoto(e viceversa) attraverso il terminale, OpenSSH mette a disposizione il comando scp.

Nel primo caso, il comando dovrebbe seguire questo schema:

scp <percorsoFileLocale> <nomeUtenteRemoto>@<indirizzoIP>:<PercorsoDestinazioneRemota>

Per esempio:

scp fileDaCopiare.txt mario@192.168.1.1:/home/mario/fileCopiato.txt

prenderà il file fileDaCopiare.txt, presente nella directory corrente del computer locale, e lo copierà nella posizione /home/mario/fileCopiato.txt (notare che abbiamo anche cambiato il nome del file, ma non è necessario) del computer remoto identificato dall'indirizzo ip 192.168.1.1 , usando l'utente mario sul computer remoto(utente di cui dobbiamo conoscere la password).

Per copiare un file da un computer remoto al computer locale, basta seguire lo schema inverso:

scp <nomeUtenteRemoto>@<indirizzoIP>:<PercorsoFileRemoto> <PercorsoDestinazioneLocale>

Per esempio:

scp mario@192.168.1.1:/home/mario/fileDaCopiare.txt .

Copierà il file remoto identificato dal percorso /home/mario/fileDaCopiare.txt nella directory corrente (identificata dal punto . ), senza rinominarlo.

Immagine(Icone/Piccole/note.png,,left) Con scp non si possono copiare file tra due computer remoti. La sorgente o la destinazione devono essere file locali.BRBR

= Controllare un computer remoto tramite terminale=

Per accedere alla linea di comando di un computer remoto, OpenSSH fornisce il comando ssh. È sufficiente digitare il comando:

ssh <nomeutente>@<indirizzoIP>

Per esempio:

ssh mario@192.168.23.42

Grazie a questo comando si disporrà in locale del computer remoto, tutto ciò che faremo in questo terminale avverrà sul computer remoto(e non sul computer locale).

Immagine(Icone/Piccole/note.png,,left) Se il computer remoto ha ubuntu come sistema operativo, risulterà impossibile connettersi ad esso come utente root, perchè in ubuntu l'utente root non è abilitato. Se si desidera svolgere compiti amministrativi su un computer remoto con ubuntu, connettersi prima come utente normale, quindi usare sudo per dare comandi con privilegi amministrativi; in alternativa, abilitare l'utente root sul computer remoto.

Autenticazione a chiave pubblica

Precedentemente è stata utilizzata l'autenticazione tipica con username e password. Tuttavia se qualcuno è venuto in possesso della password dell'utente del computer remoto, vi si potrà connettere dall'esterno a nostra insaputa, compromettendone la sicurezza. Da tempo OpenSSH è in grado di prevenire il problema, grazie all'autenticazione con chiave pubblica.

OpenSSH può usare chiavi di accesso private e pubbliche al posto della password utente remoto.

La prima cosa da fare è creare(se non se ne ha già una) la propria chiave privata sul computer locale.

Da terminale inserire:

ssh-keygen -t dsa

Verrà chiesto dove salvare la chiave privata (si consiglia di accettare la posizione predefinita ~/.ssh/id_dsa) e di scegliere una "passphrase". La passphrase è una nuova password, usata per criptare la chiave privata. Ogni qualvolta servirà la nostra chiave privata, bisognerà prima fornire la passphrase(per decriptare la chiave privata).

Immagine(Icone/Piccole/note.png,,left) Si può anche scegliere di non creare la passphrase(basta non inserirla e premere invio) e quindi non criptare la chiave privata, ma sarebbe una pessima scelta, in quanto un cracker che venisse in possesso della nostra chiave privata in chiaro, avrebbe facile accesso a tutti i servizi cui noi accediamo tramite la suddetta chiave; al contrario, con una chiave privata criptata mediante passphrase, l'eventuale cracker si ritroverebbe in mano un inutile ammasso di caratteri senza senso(gli serve la passphrase per decifrarla).BRBR

Insieme alla chiave privata viene creata anche la chiave pubblica(localizzata in ~/.ssh/id_dsa.pub sul computer locale), che è quella che possiamo dare liberamente in giro; in questo caso specifico, dobbiamo dare la nostra chiave pubblica al nostro computer remoto per garantirci la sua "fiducia", cioè l'accesso tramite ssh.

L'utente che usiamo sul computer remoto deve avere la nostra chiave pubblica nel relativo file di autorizzazione, cioè il file ~/.ssh/authorized_keys2 del computer remoto; per lo scopo, OpenSSH mette a disposizione il comando ssh-copy-id, da usare come nell'esempio

ssh-copy-id <nomeutente>@<indirizzoIP>

Immagine(Icone/Piccole/note.png,,left)Se l'autenticazione con password utente remoto è disabilitata, si deve copiare e incollare la chiave con un altro mezzo.BRBRBR

Grazie all'aggiunta della chiave pubblica sul computer remoto si diventerà "affidabili". Adesso, digitando

ssh <nomeutente>@<indirizzoIP>

verrà chiesta la nostra "passphrase" conservata in locale e non la password dell'utente remoto(salvata in /etc/password del computer remoto).

Immagine(Icone/Piccole/note.png,,left) Se si sceglie di usare solo l'autenticazione tramite chiave pubblica, per aumentare ulteriormente la sicurezza si può disabilitare l'autenticazione tramite password utente settando "PasswordAuthentication no" nel file /etc/ssh/sshd_config (è necessario riavviare il server ssh per rendere effettivo il cambiamento).BR

Evitare l'inserimento della password a ogni connessione

Se si usa l'autenticazione a chiave pubblica, OpenSSH fornisce un metodo grazie al quale la passphrase verrà chiesta solo una volta durante tutta la sessione. Questa caratteristica è utile ad esempio a chi usa spesso il comando scp, o agli amministratori di computer remoti, in quanto evita di dover reinserire la password ogni volta che si lancia un comando della suite OpenSSH.

Il comando per aggiungere la propria passphrase al gestore delle identità è ssh-add, usato semplicemente con:

ssh-add

verrà chiesta la passphrase, dopodiché la nostra chiave privata sarà disponibile senza ulteriori richieste.

Immagine(Icone/Piccole/note.png,,left) Se ci si allontana dal proprio computer, altre persone potrebbero usarlo e sfruttare la chiave privata senza conoscere la passphrase. Se si teme una simile eventualità, si consiglia di bloccare lo schermo con la combinazione di tasti CTRL+ALT+L prima di allontanarsi.BRBR

Permettere solo l'esecuzione di specifici comandi

Il computer remoto(quello con il server ssh installato) può scegliere di far eseguire solo alcuni comandi a chi vi si connette tramite autenticazione a chiave pubblica. Se per esempio si gestisce un CVS, si può aggiungere nel file authorized_keys2 la seguente riga

command="/usr/bin/cvs server" ssh-dss AAAAB3N....

In questo modo è permessa l'esecuzione esclusivamente dei comandi per il CVS e non di altri comandi.

Connettersi a un server ssh usando Microsoft Windows

Un computer con Microsoft Windows non può fare da server ssh, però può fare da client, basta scaricare un piccolo programma che si chiama [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Putty].

Connettersi a un server ssh usando un cellulare Symbian

Putty è disponibile anche in una [http://s2putty.sourceforge.net/ versione per i cellulari Symbian].


Documento originale: [wiki:Ubuntu/SSHHowto SSHHowto] {en}

CategoryInternet