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 1 e 49 (in 48 versioni)
Versione 1 del 15/06/2005 11.52.27
Dimensione: 9688
Autore: adsl-213-190-44-43
Commento: imported from the old wiki
Versione 49 del 19/05/2007 20.18.57
Dimensione: 11174
Commento: piccole correzioni alle note, aggiunta categoria sicurezza
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 1: Linea 1:
= ItalianSshHowTo = #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 che gira in remoto
[[BR]]
||<tablestyle="float:right; font-size: 0.9em; width:30%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Indice'''[[BR]][[TableOfContents(1)]]||
Linea 3: Linea 10:
##
## This doc should have:
## 1) installing ssh (done)
## 2) securing ssh
## 3) working with ssh (partly done)
## 4) issues with ssh
## Document written by: Alexander Poslavsky & Christoph Haas
= Introduzione =
Linea 11: Linea 12:
http://www.ubuntulinux.org/wiki/PicDocs.png '''OpenSSH''' è un insieme di programmi che permettono, in tutta sicurezza, di svolgere diverse operazioni:
Linea 13: Linea 14:
== Indice ==
 * Installazione di ssh-server
 * Copiare file attraverso ssh
 * Navigare con nautilus attraverso ssh
 * Connettersi ad un computer remoto con ssh
 * Autenticazione con chiavi pubbliche (pubblic keys)
 * Limitare l'accesso con ssh
 * Accesso automatico in batch script
 * Usare ssh agent
 * controllare un computer remoto (tramite terminale)
Linea 23: Linea 16:
http://www.ubuntulinux.org/wiki/IconExample48.png  * copiare file da un computer remoto al computer locale e viceversa
Linea 25: Linea 18:
== SSH ==  * cifrare qualunque traffico di dati tra computer locale e computer remoto tramite tunneling
Linea 27: Linea 20:
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''' 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 29: Linea 22:
= Preparativi =
Linea 30: Linea 24:
== Installazione di SSH-SERVER == È 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.
Linea 32: Linea 26:
Ubuntu usa ssh-server e lo si può ottenere così.
{{{
    bash:~$ sudo apt-get install openssh-server
}}}
Questo setterà il tuo ssh-server.

== Copiare File con SSH ==

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.

{{{
   bash:~$ scp <file> <username>@<indirizzoip>:<!DirectoryDiDestinazione>
Per avere il server '''ssh''' su Ubuntu, è sufficiente installare il pacchetto ''openssh-server'' tramite [:SynapticHowto:Synaptic], [:AdeptHowTo:Adept] o [:Apt:apt-get]. Per installare il sopra citato pacchetto da terminale è sufficiente digitare il seguente comando: {{{
sudo apt-get install openssh-server
Linea 46: Linea 30:
oppure in termini più pratici. se sto copiando un file da uno dei miei computer ad un altro il comando sarà Il client ssh (contenuto nel pacchetto ''openssh-client'') è installato in Ubuntu in modo predefinito.
Linea 48: Linea 32:
{{{
   bash:~$ scp file.txt hornbeck@192.168.1.103:/home/hornbeck
= Usare Nautilus con computer remoti =

'''Nautilus''' può 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>`
Linea 52: Linea 38:
(In questo caso sarà copiato il file <file.txt> da un computer locale verso il computer remoto <hornbeck@192.168.1.103> e nella directory /home/hornbeck). Ci si deve perciò assicurare di aver incluso il <file>, la <username> del computer a cui ci si stà connettendo , l ' <indirizzo IP> e la <!Directory di destinazione> dove il file sarà copiato. Il secondo metodo permette di avere un'icona persistente in Nautilus ed evitare così di inserire ogni volta gli stessi <nomeutenteRemoto> e <indirizzoIP>. Scegliere '''''Risorse -> Connetti al server...''''', quindi inserire:
Linea 54: Linea 40:
Si può anche copiare un file da un computer remoto verso il disco fisso locale ||<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: || <nomeAPiacere> ||
Linea 56: Linea 46:
{{{
   bash:~$ scp hornbeck@192.168.1.103:/home/hornbeck/urls.txt .
= Utilizzo da terminale =

== Copia di file ==

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>
Linea 60: Linea 56:
Il '.' (l'ultimo punto) significa che il file sarà copiato nella directory corrente. Il file naturalmente potrà essere anche rinominato ( es my.txt ) e questo sarà fatto durante il trasferimento.

IMPORTANTE: non si possono muovere file tra due computer remoti. La sorgente o la destinazione devono essere file locali.


== Navigare con Nautilus Attraverso ssh ==

Usando nautilus si può avere comunque accesso a computer remoti per navigare, editare e copiare. Aprire un Nautilus file browser ( per esempio attraverso Computer -> Home) e successivamente premere CTRL + L. Scrivere il seguente indirizzo url

{{{
   ssh://<username>@<hostname>
Per esempio: {{{
scp fileDaCopiare.txt mario@192.168.1.1:/home/mario/fileCopiato.txt
Linea 73: Linea 60:
( rimpiazzare <username> e <hostname> in maniera adeguata) 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 75: Linea 62:
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-sistem locale.

== Connettersi ad un computer remoto con ssh ==

Per connettersi ad un computer remoto lanciando ssh si deve digitare qualcosa del tipo:

{{{
    bash:~$ ssh <username>@<ipaddress>
Per copiare un file da un computer remoto al computer locale, basta seguire lo schema inverso: {{{
scp <nomeUtenteRemoto>@<indirizzoIP>:<PercorsoFileRemoto> <PercorsoDestinazioneLocale>
Linea 85: Linea 66:
esempio:

{{{
    bash:~$ ssh phyrex@192.168.23.42
Per esempio: {{{
scp mario@192.168.1.1:/home/mario/fileDaCopiare.txt .
Linea 91: Linea 70:
http://www.ubuntulinux.org/wiki/IconNote.png Copierà il file remoto identificato dal percorso `/home/mario/fileDaCopiare.txt` nella directory corrente (identificata dal punto `.` ), senza rinominarlo.
Linea 93: Linea 72:
'''Nota:'''
   Si può sempre usare l'hostname (se conosciuto dal sistema (![/etc/hosts])) al posto dell'indirizzo IP.
||<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 96: Linea 74:
== Public key authentication == == Terminale di un computer remoto ==
Linea 98: Linea 76:
Precedentemente si è usata l'autenticazione tipica con username e password. Tuttavia se qualcuno ha 'indovinato' o è venuto in possesso della tua password la tua sicurezza può essere compromessa. Da tempo ssh offre un'autenticazione con chiave pubblica ( pubblic key authentication).
Ssh usa chiavi di accesso private e pubblica al posto di una semplice password.
Per accedere alla linea di comando di un computer remoto, '''OpenSSH''' fornisce il comando '''ssh'''. È sufficiente digitare il comando: {{{
ssh <nomeutente>@<indirizzoIP>
}}}
Linea 101: Linea 80:
A meno che non si abbia già una chiave privata , la prima cosa da fare è crearne una.
Digitare
{{{
 ssh-keygen -t dsa
Per esempio: {{{
ssh mario@192.168.23.42
Linea 106: Linea 83:
Sarà chiesto dove salvare la chiave la chiave privata (si può accettare la locazione di defaul) 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.
Linea 108: Linea 84:
Ora per avere accesso ad altri computer, questi devono 'fidarsi' della tua chiave pubblica. La chiave pubblica è stata creata assieme alla chiave privata ed è generalmente locata in {{{~/.ssh/id_dsa.pub}}} 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).
Linea 110: Linea 86:
L'utente target (verso cui ci si connette) deve avere questa chiave (è una linea dei caratteri di 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{{{
 ssh-copy-id root@fileserver01}}}
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 113: Linea 88:
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{{{
 ssh root@fileserver01}}}
= Aumentare la sicurezza =
Linea 117: Linea 90:
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 tua chiave privata sul tuo computer. == Autenticazione a chiave pubblica ==
Linea 119: Linea 92:
Ricapitolando: l'attuale sicurezza di una autenticazione con chiave pubblica rispetto ad una autenticazione con password è che per avere un accesso si necessita di avere: Per impostazione predefinita, OpenSSH su ubuntu permette il log-in tramite autenticazione con username 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 e a nostra insaputa, compromettendo la sicurezza del computer remoto. Da tempo '''OpenSSH''' è in grado di prevenire il problema, grazie all'autenticazione con chiave pubblica.
Linea 121: Linea 94:
 * la chiave privata (criptata)
 * la passphrase per decriptare la chiave privata
'''OpenSSH''' può usare chiavi di accesso private e pubbliche al posto della password utente remoto.
Linea 124: Linea 96:
Così se non si scegliesse affatto la passphrase (il che è possibile -vedi dopo) si avrebbe meno sicurezza che usare solo una password. La prima cosa da fare è creare(se non se ne ha già una) la propria coppia di chiavi (privata e pubblica) sul computer locale.
Linea 126: Linea 98:
http://www.ubuntulinux.org/wiki/IconNote.png Da terminale inserire: {{{
ssh-keygen -t dsa
}}}
Linea 128: Linea 102:
'''Nota:'''
  Per ragioni di sicurezza si può disabilitare l'autenticazione tramite password settando "!PasswordAuthentication no" nel file /etc/ssh/sshd_config. Non si deve però poi dimenticare di riavviare ssh-server dopo il cambio di configurazione.
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 cifrare la chiave privata. Ogni qualvolta servirà la nostra chiave privata, bisognerà prima fornire la passphrase(per decifrare la chiave privata).
Linea 131: Linea 104:
== Limitare l'accesso a ssh == ||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5% ^>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">''Si può anche scegliere di non creare la passphrase(basta non inserirla e premere invio) e quindi non cifrare 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 cifrata mediante passphrase, l'eventuale cracker si ritroverebbe in mano un inutile ammasso di caratteri senza senso(gli serve la passphrase per decifrarla).'' ||
Linea 133: Linea 106:
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{{{
 command="/usr/bin/cvs server" ssh-dss AAAAB3N....}}}
Insieme alla chiave privata viene creata anche la chiave pubblica (localizzata in `~/.ssh/id_dsa.pub` sul computer locale), che è quella distribuibile liberamente; in questo caso specifico, dobbiamo dare la nostra chiave pubblica al nostro computer remoto per garantirci la sua "fiducia", cioè l'accesso tramite ssh.
Linea 136: Linea 108:
Questo permetterà l'esecuzione solo dei comandi per il CVS e nessun altro. L'utente che usiamo sul computer remoto deve avere la nostra 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 nell'esempio: {{{
ssh-copy-id -i <percorsoLocaleChiavePubblica> <nomeUtenteRemoto>@<indirizzoIP>
}}}
Linea 138: Linea 112:
== Accesso automatico in batch scripts == Per esempio: {{{
ssh-copy-id -i ~/.ssh/id_dsa.pub mario@192.168.23.42
}}}
Linea 140: Linea 116:
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 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.
||<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 143: Linea 118:
http://www.ubuntulinux.org/wiki/IconWarning3.png Grazie all'aggiunta della chiave pubblica sul computer remoto si diventerà "affidabili". Adesso, digitando {{{
ssh <nomeutente>@<indirizzoIP>
}}}
Linea 145: Linea 122:
'''Attenzione!'''
  Avere una chiave privata non protetta può compromettere la sicurezza. Gli Hackers necessiterebbero solo di venire in possesso della chiave pubblica per connettersi liberamente al computer target.
verrà chiesta la nostra "passphrase" conservata in locale e non la password dell'utente remoto (salvata in `/etc/password` del computer remoto).
Linea 148: Linea 124:
== Usare ssh-agent == Se si sceglie di usare solo l'autenticazione tramite chiave pubblica, per aumentare ulteriormente la sicurezza si può disabilitare l'autenticazione tramite password utente impostando: {{{
Password``Authentication no
}}} nel file `/etc/ssh/sshd_config` (è necessario riavviare il server SSH per rendere effettivo il cambiamento).
Linea 150: Linea 128:
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.
=== Memorizzazione della passphrase ===
Linea 153: Linea 130:
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?!? :) 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 155: Linea 132:
http://www.ubuntulinux.org/wiki/IconNote.png Il comando per aggiungere la propria passphrase al gestore delle identità è '''ssh-add''', usato semplicemente con: {{{
ssh-add
}}}
verrà chiesta la passphrase, dopodiché la chiave privata sarà disponibile senza ulteriori richieste.
Linea 157: Linea 137:
'''Importante:'''
  quando si lascia il proprio desktop si deve bloccare lo schermo. Altro persone potrebbero avere accesso ad altri computer dal tuo computer senza conoscere la passphrase.
||<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.'' ||
Linea 160: Linea 139:
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: == Permessi sui comandi ==
Linea 162: Linea 141:
 * Cliccare su *Computer*
 * Scegliere *Desktop Preferences*
 * Scegliere *Sessions*
 * Scegliere il tab *Startup Programs*
 * Cliccare *Add*
 * Digitare "ssh-add" come comando
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_keys` la seguente riga {{{
command="/usr/bin/cvs server" ssh-dss AAAAB3N....
}}}
Linea 169: Linea 145:
Dopo il prossimo login sarà chiesta la passphrase. In questo modo è permessa l'esecuzione esclusivamente dei comandi per il CVS e non di altri comandi.
Linea 171: Linea 147:
= Il protocollo SSH su altri sistemi operativi =
Linea 172: Linea 149:
{{{
Traduzione di Alessandro Albiero
Documento Originale: SSHHowto
}}}
== Microsoft 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].

== Cellulare Symbian ==

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

= Ulteriori risorse =

 * [wiki:Ubuntu/SSHHowto Pagina sul wiki inglese]
 * [http://www.openssh.org/ Sito ufficiale del progetto]
 
----
CategoryInternet CategorySicurezza

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

Preparativi

È 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 installare il pacchetto openssh-server tramite [:SynapticHowto:Synaptic], [:AdeptHowTo:Adept] o [:Apt:apt-get]. Per installare il sopra citato pacchetto da terminale è sufficiente digitare 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

Nautilus può 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 secondo metodo permette di avere un'icona persistente in Nautilus ed evitare così di inserire ogni volta gli stessi <nomeutenteRemoto> e <indirizzoIP>. Scegliere Risorse -> Connetti al server..., quindi inserire:

Campo

Valore

Tipo di servizio:

SSH

Server:

<indirizzoIP>

Nome utente:

<nomeutenteRemoto>

Nome da usare per la connessione:

<nomeAPiacere>

Utilizzo da terminale

Copia di file

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,,center)

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

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>

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

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 su ubuntu permette il log-in tramite autenticazione con username 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 e a nostra insaputa, 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(se non se ne ha già una) la propria coppia di chiavi (privata e pubblica) 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 cifrare la chiave privata. Ogni qualvolta servirà la nostra chiave privata, bisognerà prima fornire la passphrase(per decifrare la chiave privata).

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

Si può anche scegliere di non creare la passphrase(basta non inserirla e premere invio) e quindi non cifrare 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 cifrata mediante passphrase, l'eventuale cracker si ritroverebbe in mano un inutile ammasso di caratteri senza senso(gli serve la passphrase per decifrarla).

Insieme alla chiave privata viene creata anche la chiave pubblica (localizzata in ~/.ssh/id_dsa.pub sul computer locale), che è quella distribuibile liberamente; 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_keys del computer remoto; per lo scopo, OpenSSH mette a disposizione il comando ssh-copy-id, da usare sul computer locale come nell'esempio:

ssh-copy-id -i <percorsoLocaleChiavePubblica> <nomeUtenteRemoto>@<indirizzoIP>

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

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

Se si sceglie di usare solo l'autenticazione tramite chiave pubblica, per aumentare ulteriormente la sicurezza si può disabilitare l'autenticazione tramite password utente impostando:

Password``Authentication no

nel file /etc/ssh/sshd_config (è necessario riavviare il server SSH per rendere effettivo il cambiamento).

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 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 chiave privata sarà disponibile senza ulteriori richieste.

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

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

Il protocollo SSH su altri sistemi operativi

Microsoft 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].

Cellulare Symbian

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

Ulteriori risorse


CategoryInternet CategorySicurezza