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 13 e 57 (in 44 versioni)
Versione 13 del 21/03/2007 21.06.33
Dimensione: 11379
Autore: DavideLuigi
Commento:
Versione 57 del 12/10/2007 11.53.24
Dimensione: 10710
Commento: revisionata
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 1: Linea 1:
## page was renamed from SshHowTo
||<tablestyle="float:right; font-size: 0.9em; width:50%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Indice'''[[BR]][[TableOfContents]]||
## page was renamed from SSHHowto
#format wiki
#LANGUAGE it
##TODO:
##--usare risorse -> connessione al server... per avere disponibile un filesystem remoto in nautilus
##--criptare una connessione tramite tunneling
##--usare X11Forwarding per vedere in locale una applicazione grafica c
he gira in remoto
[[BR]]

||<tablestyle="float:right; font-size: 0.9em; width:35%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Indice'''[[BR]][[TableOfContents(1)]]||
Linea 6: Linea 13:
OpenSSH è un insieme di programmi per connettersi a un computer remoto in tutta sicurezza:
 * fornisce vari metodi di autenticazione
 * cripta tutto il traffico fra i due computer (password compresa) per eliminare il rischio di ascolto passivo, di hijacking della connessione e altri attacchi a livello di rete
 * fornisce una miriade di possibilità di tunneling sicuro.
'''OpenSSH''' è un insieme di programmi che permettono, in tutta sicurezza, di svolgere diverse operazioni:
Linea 11: Linea 15:
 * controllare un computer remoto tramite terminale;
Linea 12: Linea 17:
= Preparazione dei computer =  * copiare file da un computer remoto al computer locale e viceversa;
Linea 14: Linea 19:
È 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.  * cifrare qualunque traffico di dati tra computer locale e computer remoto tramite il ''tunneling''.
Linea 16: Linea 21:
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: '''OpenSSH''' sostituisce i vecchi programmi '''telnet''', '''rlogin''' e '''ftp''', considerati poco sicuri poichè trasmettono in chiaro i dati relativi all'autenticazione (nome utente, password etc).
Linea 18: Linea 23:
[[Anchor(installazione)]]
= Installazione =

È 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, su entrambi dovranno essere installati sia il server che il client.

Per avere il server '''ssh''' su Ubuntu, è sufficiente [:InstallareProgrammi:installare] il pacchetto ''openssh-server''.

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

[[Anchor(accessoremoto)]]
= Usare nautilus con computer remoti =

'''nautilus''' consente di visualizzare, modificare, eliminare o copiare file presenti su un computer remoto (con server '''ssh''' installato) in tutta sicurezza, grazie a '''OpenSSH'''. Il metodo più semplice per ottenere ciò è aprire '''nautilus''' e inserire l'indirizzo desiderato (verrà chiesta la password dell'utente remoto), come da esempio:
Linea 19: Linea 37:
sudo apt-get install openssh-server ssh://nomeutenteRemoto@indirizzoIP
Linea 22: Linea 40:
Il client ssh (contenuto nel pacchetto ''openssh-client'') è installato in ubuntu in modo predefinito. Il metodo successivo permette di avere un'icona persistente in '''nautilus''', evitando dunque di inserire ogni volta gli stessi «nomeutenteRemoto» e «indirizzoIP». Scegliere '''''Risorse -> Connetti al server...''''', quindi inserire i seguenti dati:
Linea 24: Linea 42:
= Usare Nautilus con computer remoti in maniera sicura = ||<style="background-color:#FEB76D;":>'''Campo'''||<style="background-color:#FEB76D;":>'''Valore'''||
|| Tipo di servizio: || SSH ||
|| Server: || «indirizzoIP» ||
|| Nome utente: || «nomeutenteRemoto» ||
|| Nome da usare per la connessione: || a scelta dell'utente ||
Linea 26: Linea 48:
'''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: = Utilizzo da terminale =
Linea 28: Linea 50:
== Copia di file ==

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

Nel primo caso, la sintassi del comando dovrebbe essere simile alla seguente:
Linea 29: Linea 56:
ssh://<nomeutente>@<indirizzoIP> scp percorsoFileLocale nomeUtenteRemoto@indirizzoIP:PercorsoDestinazioneRemota
Linea 32: Linea 59:
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 =

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:
Quello che segue è un esempio:
Linea 51: Linea 64:
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). Il precedente comando copierà il file `fileDaCopiare.txt` dalla cartella corrente del computer locale alla posizione `/home/mario/fileCopiato.txt` (non è necessario cambiare il nome del file) del computer remoto identificato dall'indirizzo ip `192.168.1.1` , usando l'utente `mario` sul computer remoto.
Linea 53: Linea 66:
Per copiare un file da un computer remoto al computer locale, basta seguire lo schema inverso: Per copiare un file da un computer remoto al computer locale, basta seguire lo schema inverso, digitando un comando simile al seguente:
Linea 55: Linea 68:
scp <nomeUtenteRemoto>@<indirizzoIP>:<PercorsoFileRemoto> <PercorsoDestinazioneLocale> scp nomeUtenteRemoto@indirizzoIP:PercorsoFileRemoto PercorsoDestinazioneLocale
Linea 58: Linea 71:
Per esempio: Quello che segue è un esempio:
Linea 63: Linea 76:
Copierà il file remoto identificato dal percorso `/home/mario/fileDaCopiare.txt` nella directory corrente (identificata dal punto `.` ), senza rinominarlo. Tale comando copierà il file remoto identificato dal percorso `/home/mario/fileDaCopiare.txt` nella cartella corrente (identificata dal punto `.`), senza rinominarlo.
Linea 65: Linea 78:
[[Immagine(Icone/Piccole/note.png,,left)]] Con '''scp''' non si possono spostare file tra due computer remoti. La sorgente o la destinazione devono essere file locali.[[BR]][[BR]] ||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5% ^>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">''Con'' '''scp''' ''non si possono copiare file tra due computer remoti. La sorgente o la destinazione devono essere file locali.'' ||
Linea 67: Linea 80:
== Accedere al terminale di un computer remoto ==
Linea 68: Linea 82:
= Usare il terminale di un computer remoto =

Per accedere al terminale di un computer remoto, '''OpenSSH''' fornisce il comando '''ssh'''. È sufficiente digitare il comando:
Per accedere alla linea di comando di un computer remoto, '''OpenSSH''' fornisce il comando '''ssh'''. È sufficiente digitare il comando:
Linea 73: Linea 84:
ssh <nomeutente>@<indirizzoIP> ssh nomeutente@indirizzoIP
Linea 76: Linea 87:
Per esempio:
Quello che segue è un esempio:
Linea 82: Linea 92:
Grazie a questo comando si disporrà in locale del computer remoto, tutto cioò che faremo in questo terminale avverrà sul computer remoto(e non sul computer locale). Se il computer remoto utilizza Ubuntu come sistema operativo, risulterà impossibile connettersi a 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, [:Sudo#abilitare_login_root:abilitare l'utente root] sul computer remoto.
Linea 84: Linea 94:
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. = Aumentare la sicurezza =
Linea 86: Linea 96:
= Autenticazione a chiave pubblica = == Autenticazione a chiave pubblica ==
Linea 88: Linea 98:
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, tramite l'autenticazione con chiave pubblica. Per impostazione predefinita, '''OpenSSH''' consente di effettuare l'accesso tramite autenticazione con nome utente e password dell'utente remoto. Tuttavia se qualcuno è venuto in possesso di nome e password dell'utente del computer remoto, vi si potrà connettere dall'esterno, compromettendo la sicurezza del computer remoto. Da tempo '''OpenSSH''' è in grado di prevenire il problema, grazie all'autenticazione con chiave pubblica.
Linea 90: Linea 100:
'''OpenSSH''' può usare chiavi di accesso private e pubbliche al posto della coppia utente/password.

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

Da terminale inseri
re:
'''OpenSSH''' può usare chiavi di accesso private e pubbliche al posto della password utente remoto. La prima cosa da fare è creare la propria coppia di chiavi, privata e pubblica, sul computer locale. Aprire una finestra di terminale e digitare:
Linea 99: Linea 105:
Verrà chiesto dove salvare la chiave privata (si consiglia di accettare la posizione predefinita) 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). Verrà chiesto dove salvare la chiave privata (si consiglia di accettare la posizione predefinita `~/.ssh/id_dsa`) e di scegliere una '''passphrase''' adeguata. La passphrase è una nuova password, usata per cifrare la chiave privata. Ogni qualvolta servirà la nostra chiave privata, bisognerà prima fornire la passphrase.
Linea 101: Linea 107:
[[Immagine(Icone/Piccole/note.png,,left)]] Potremmo anche scegliere di non creare la passphrase(basta non inserirla e premere invio), 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; invece, con una chiave privata criptata, l'eventuale cracker si ritroverebbe in mano un'inutile ammasso di caratteri senza senso(gli serve la passphrase per decifrarla).[[BR]][[BR]] ||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5% ^>[[Immagine(Icone/Grandi/info.png,,center)]] ||<style="padding:0.5em; border:none;">Si può anche scegliere di non creare la passphrase e quindi di non cifrare la chiave privata, ma sarebbe una pessima scelta, in quanto chiunque venisse in possesso della nostra chiave privata in chiaro avrebbe facilmente accesso a tutti i servizi. ||
Linea 103: Linea 109:
Insieme alla chiave privata, è stata 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. Insieme alla chiave privata viene creata anche la chiave pubblica (localizzata in `~/.ssh/id_dsa.pub` sul computer locale), liberamente distribuibile.
Linea 105: Linea 111:
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; pertanto 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 L'account utente sul computer remoto usato per l'accesso deve avere memorizzata la chiave pubblica nel relativo file di autorizzazione, cioè il file `~/.ssh/authorized_keys` del computer remoto; per lo scopo, '''OpenSSH''' mette a disposizione il comando `ssh-copy-id`, da usare sul computer locale come nel seguente esempio:
Linea 107: Linea 113:
ssh-copy-id root@fileserver01 ssh-copy-id -i percorsoLocaleChiavePubblica nomeUtenteRemoto@indirizzoIP
Linea 110: Linea 116:
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.

Successivamente all'aggiunta della chiave pubblica si sarà "affidabili". Digitare
Quello che segue è un esempio:
Linea 114: Linea 118:
ssh root@fileserver01 ssh-copy-id -i ~/.ssh/id_dsa.pub mario@192.168.23.42
Linea 117: Linea 121:
e successivamente sarà chiesta la nostra "passphrase" conservata in locale e non la password dell'utente root remoto(salvata in `/etc/password` del computer remoto). ||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5% ^>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">''Se l'autenticazione con password utente remoto è disabilitata, si deve copiare e incollare la chiave con un altro mezzo.'' ||
Linea 119: Linea 123:
Ricapitolando: l'attuale sicurezza di una autenticazione con chiave pubblica rispetto a una semplice autenticazione con utente/password è che per avere un accesso si necessita di avere: Una volta aggiunta la chiave pubblica sul computer remoto sarà possibile effetuare l'accesso. Aprire una finestra di terminale e digitare il seguente comando:
{{{
ssh nomeutente@indirizzoIP
}}}
Linea 121: Linea 128:
 * la chiave privata (criptata mediante passphrase) Verrà chiesta la passphrase conservata in locale e non la password dell'utente remoto (salvata in `/etc/password` del computer remoto).
Linea 123: Linea 130:
 * la passphrase per decriptare la chiave privata Se si sceglie di usare solo l'autenticazione tramite chiave pubblica, per aumentare ulteriormente la sicurezza si può disabilitare l'autenticazione tramite password utente. Aprire il file `/etc/ssh/sshd_config` con un [:EditorDiTesto:Editor di testo] con i [:Sudo:privilegi di amministrazione] e aggiungere la seguente riga:
{{{
Password``Authentication no
}}}
Linea 125: Linea 135:
Terminate le modifiche sarà necessario riavviare il server '''ssh'''.
Linea 126: Linea 137:
== Memorizzazione della passphrase ==
Linea 127: Linea 139:
[[Immagine(Icone/Piccole/note.png,,left)]] Per aumentare la sicurezza si può disabilitare l'autenticazione tramite utente/password settando "Password``Authentication no" nel file `/etc/ssh/sshd_config` (è necessario riavviare il server ssh per rendere effettivo il cambiamento).[[BR]] 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.
Linea 129: Linea 141:
= Permettere solo l'esecuzione di specifici comandi = Il comando per aggiungere la propria passphrase al gestore delle identità è '''ssh-add'''. Digitare il seguente comando:
{{{
ssh-add
}}}
Linea 131: Linea 146:
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 Verrà chiesta la passphrase, dopodiché la chiave privata sarà sempre disponibile.

||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5% ^>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">''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.'' ||

== Permessi sui comandi ==

Sul computer remoto si può scegliere di far eseguire solo alcuni comandi a chi vi si connette tramite autenticazione a chiave pubblica. Se per esempio si gestisce un repository [:Cvs:CVS], si può aggiungere nel file `authorized_keys` la seguente riga:
Linea 136: Linea 157:
In questo modo è permessa l'esecuzione esclusivamente dei comandi per il CVS e non di altri comandi. In questo modo è permessa l'esecuzione esclusivamente dei comandi per il CVS.
Linea 138: Linea 159:
= Evitare l'inserimento della password a ogni connessione = = Il protocollo SSH su altri sistemi operativi =
Linea 140: Linea 161:
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 che '''OpenSSH''' offre un programma che ci evita di digitare la passphrase ogni volta: '''ssh-agent'''. == Supporto per Windows ==
Linea 142: Linea 163:
Si necessita 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. Microsoft Windows dispone di [http://www.openssh.com/windows.html diverse alternative] più o meno valide per usare il protocollo SSH e fare anche da server. Il più diffuso client SSH per Windows è [http://www.chiark.greenend.org.uk/~sgtatham/putty/ Putty].
Linea 144: Linea 165:
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. == Supporto per cellulari Symbian ==
Linea 146: Linea 167:
[[Immagine(Icone/Piccole/note.png,,left)]] Se ci si allontana dal proprio computer per un po' di tempo, altre persone potrebbero avere accesso ad altri computer dal proprio computer 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]] Il client SSH '''Putty''' è disponibile anche in una versione per cellulari Symbian a [http://s2putty.sourceforge.net/ questo indirizzo].
Linea 148: Linea 169:
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: = Ulteriori risorse =
Linea 150: Linea 171:
 * Selezionare ''`Sistema -> Preferenze -> Sessioni`''

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

 * Fare clic su «''Aggiungi''»

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

Al prossimo login sarà richiesta la passphrase.

= Accesso automatico in batch scripts =

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.

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 nel file authorized_keys2 dell'altro computer (ssh-copy-id). Ora ci si può connettere con questa macchina senza che venga chiesta la passphrase. Aggiungere infine una chiamata ad ssh nel cronotab.

[[Immagine(Icone/Piccole/warning.png,,left)]] '''Avere una chiave privata non protetta può compromettere la sicurezza. Eventuali cracker necessiterebbero solo di venire in possesso della chiave pubblica per connettersi liberamente al computer target.'''[[BR]][[BR]]

= Connettersi a un server ssh usando Microsoft Windows =

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

'''`Putty`''', inoltre, è disponibile anche in una [http://s2putty.sourceforge.net/ versione per i cellulari Symbian].
 * [http://www.openssh.org/ Sito ufficiale del progetto]
 * [wiki:Ubuntu/SSHHowto Pagina sul wiki internazionale]
Linea 175: Linea 174:
Documento originale: [wiki:Ubuntu/SSHHowto SSHHowto] {en}

CategoryInternet
CategoryInternet CategorySicurezza CategoryServer

BR

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;
  • cifrare qualunque traffico di dati tra computer locale e computer remoto tramite il tunneling.

OpenSSH sostituisce i vecchi programmi telnet, rlogin e ftp, considerati poco sicuri poichè trasmettono in chiaro i dati relativi all'autenticazione (nome utente, password etc).

Anchor(installazione)

Installazione

È 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, su entrambi dovranno essere installati sia il server che il client.

Per avere il server ssh su Ubuntu, è sufficiente [:InstallareProgrammi:installare] il pacchetto openssh-server.

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

Anchor(accessoremoto)

Usare nautilus con computer remoti

nautilus consente di visualizzare, modificare, eliminare o copiare file presenti su un computer remoto (con server ssh installato) in tutta sicurezza, grazie a OpenSSH. Il metodo più semplice per ottenere ciò è aprire nautilus e inserire l'indirizzo desiderato (verrà chiesta la password dell'utente remoto), come da esempio:

ssh://nomeutenteRemoto@indirizzoIP

Il metodo successivo permette di avere un'icona persistente in nautilus, evitando dunque di inserire ogni volta gli stessi «nomeutenteRemoto» e «indirizzoIP». Scegliere Risorse -> Connetti al server..., quindi inserire i seguenti dati:

Campo

Valore

Tipo di servizio:

SSH

Server:

«indirizzoIP»

Nome utente:

«nomeutenteRemoto»

Nome da usare per la connessione:

a scelta dell'utente

Utilizzo da terminale

Copia di file

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

Nel primo caso, la sintassi del comando dovrebbe essere simile alla seguente:

scp percorsoFileLocale nomeUtenteRemoto@indirizzoIP:PercorsoDestinazioneRemota

Quello che segue è un esempio:

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

Il precedente comando copierà il file fileDaCopiare.txt dalla cartella corrente del computer locale alla posizione /home/mario/fileCopiato.txt (non è necessario cambiare il nome del file) del computer remoto identificato dall'indirizzo ip 192.168.1.1 , usando l'utente mario sul computer remoto.

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

scp nomeUtenteRemoto@indirizzoIP:PercorsoFileRemoto PercorsoDestinazioneLocale

Quello che segue è un esempio:

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

Tale comando copierà il file remoto identificato dal percorso /home/mario/fileDaCopiare.txt nella cartella corrente (identificata dal punto .), senza rinominarlo.

Immagine(Icone/Piccole/note.png,,center)

Con scp non si possono copiare file tra due computer remoti. La sorgente o la destinazione devono essere file locali.

Accedere al terminale di un computer remoto

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

ssh nomeutente@indirizzoIP

Quello che segue è un esempio:

ssh mario@192.168.23.42

Se il computer remoto utilizza Ubuntu come sistema operativo, risulterà impossibile connettersi a 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, [:Sudo#abilitare_login_root:abilitare l'utente root] sul computer remoto.

Aumentare la sicurezza

Autenticazione a chiave pubblica

Per impostazione predefinita, OpenSSH consente di effettuare l'accesso tramite autenticazione con nome utente e password dell'utente remoto. Tuttavia se qualcuno è venuto in possesso di nome e password dell'utente del computer remoto, vi si potrà connettere dall'esterno, compromettendo la sicurezza del computer remoto. 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 la propria coppia di chiavi, privata e pubblica, sul computer locale. Aprire una finestra di terminale e digitare:

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 adeguata. La passphrase è una nuova password, usata per cifrare la chiave privata. Ogni qualvolta servirà la nostra chiave privata, bisognerà prima fornire la passphrase.

Immagine(Icone/Grandi/info.png,,center)

Si può anche scegliere di non creare la passphrase e quindi di non cifrare la chiave privata, ma sarebbe una pessima scelta, in quanto chiunque venisse in possesso della nostra chiave privata in chiaro avrebbe facilmente accesso a tutti i servizi.

Insieme alla chiave privata viene creata anche la chiave pubblica (localizzata in ~/.ssh/id_dsa.pub sul computer locale), liberamente distribuibile.

L'account utente sul computer remoto usato per l'accesso deve avere memorizzata la chiave pubblica nel relativo file di autorizzazione, cioè il file ~/.ssh/authorized_keys del computer remoto; per lo scopo, OpenSSH mette a disposizione il comando ssh-copy-id, da usare sul computer locale come nel seguente esempio:

ssh-copy-id -i percorsoLocaleChiavePubblica nomeUtenteRemoto@indirizzoIP

Quello che segue è un esempio:

ssh-copy-id -i ~/.ssh/id_dsa.pub mario@192.168.23.42

Immagine(Icone/Piccole/note.png,,center)

Se l'autenticazione con password utente remoto è disabilitata, si deve copiare e incollare la chiave con un altro mezzo.

Una volta aggiunta la chiave pubblica sul computer remoto sarà possibile effetuare l'accesso. Aprire una finestra di terminale e digitare il seguente comando:

ssh nomeutente@indirizzoIP

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

Se si sceglie di usare solo l'autenticazione tramite chiave pubblica, per aumentare ulteriormente la sicurezza si può disabilitare l'autenticazione tramite password utente. Aprire il file /etc/ssh/sshd_config con un [:EditorDiTesto:Editor di testo] con i [:Sudo:privilegi di amministrazione] e aggiungere la seguente riga:

Password``Authentication no

Terminate le modifiche sarà necessario riavviare il server ssh.

Memorizzazione della passphrase

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.

Il comando per aggiungere la propria passphrase al gestore delle identità è ssh-add. Digitare il seguente comando:

ssh-add

Verrà chiesta la passphrase, dopodiché la chiave privata sarà sempre disponibile.

Immagine(Icone/Piccole/note.png,,center)

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.

Permessi sui comandi

Sul computer remoto si può scegliere di far eseguire solo alcuni comandi a chi vi si connette tramite autenticazione a chiave pubblica. Se per esempio si gestisce un repository [:Cvs:CVS], si può aggiungere nel file authorized_keys la seguente riga:

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

In questo modo è permessa l'esecuzione esclusivamente dei comandi per il CVS.

Il protocollo SSH su altri sistemi operativi

Supporto per Windows

Microsoft Windows dispone di [http://www.openssh.com/windows.html diverse alternative] più o meno valide per usare il protocollo SSH e fare anche da server. Il più diffuso client SSH per Windows è [http://www.chiark.greenend.org.uk/~sgtatham/putty/ Putty].

Supporto per cellulari Symbian

Il client SSH Putty è disponibile anche in una versione per cellulari Symbian a [http://s2putty.sourceforge.net/ questo indirizzo].

Ulteriori risorse


CategoryInternet CategorySicurezza CategoryServer