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 75 (in 74 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 75 del 20/11/2008 17.10.38
Dimensione: 12736
Autore: DavideLuigi
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 1: Linea 1:
= ItalianSshHowTo =

##
## 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

http://www.ubuntulinux.org/wiki/PicDocs.png

== 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

http://www.ubuntulinux.org/wiki/IconExample48.png

== SSH ==

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


== Installazione di SSH-SERVER ==

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>
}}}

oppure in termini più pratici. se sto copiando un file da uno dei miei computer ad un altro il comando sarà

{{{
   bash:~$ scp file.txt hornbeck@192.168.1.103:/home/hornbeck
}}}

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

Si può anche copiare un file da un computer remoto verso il disco fisso locale

{{{
   bash:~$ scp hornbeck@192.168.1.103:/home/hornbeck/urls.txt .
}}}

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>
}}}

( rimpiazzare <username> e <hostname> in maniera adeguata)

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>
}}}

esempio:

{{{
    bash:~$ ssh phyrex@192.168.23.42
}}}

http://www.ubuntulinux.org/wiki/IconNote.png

'''Nota:'''
   Si può sempre usare l'hostname (se conosciuto dal sistema (![/etc/hosts])) al posto dell'indirizzo IP.

== Public key authentication ==

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.

A meno che non si abbia già una chiave privata , la prima cosa da fare è crearne una.
Digitare
{{{
 ssh-keygen -t dsa
}}}
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.

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}}}

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}}}

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}}}

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.

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:

 * la chiave privata (criptata)
 * la passphrase per decriptare la chiave privata

Così se non si scegliesse affatto la passphrase (il che è possibile -vedi dopo) si avrebbe meno sicurezza che usare solo una password.

http://www.ubuntulinux.org/wiki/IconNote.png

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

== 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{{{
 command="/usr/bin/cvs server" ssh-dss AAAAB3N....}}}

Questo permetterà l'esecuzione solo dei comandi per il CVS e nessun altro.

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

http://www.ubuntulinux.org/wiki/IconWarning3.png

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

== 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?!? :)

http://www.ubuntulinux.org/wiki/IconNote.png

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

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:

 * Cliccare su *Computer*
 * Scegliere *Desktop Preferences*
 * Scegliere *Sessions*
 * Scegliere il tab *Startup Programs*
 * Cliccare *Add*
 * Digitare "ssh-add" come comando

Dopo il prossimo login sarà chiesta la passphrase.


{{{
Traduzione di Alessandro Albiero
Documento Originale: SSHHowto
}}}
## 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
##--revisionare il paragrafo relativo all'X11 Forwarding
[[BR]]
[[Indice(depth=1)]]

= 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)]]
= 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 [:AmministrazioneSistema/InstallareProgrammi:installare] il pacchetto ''openssh-server''.

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

Inoltre si dovranno conoscere il nome e la password di una utenza presente nel computer remoto.

[[Anchor(accessoremoto)]]
= Esplorare i file di un computer remoto =

Per esplorare i file di un computer remoto (con '''server ssh''' attivo) come se si trovassero nel proprio computer locale, scegliere '''''Risorse -> Connetti al server...''''', quindi inserire i seguenti dati:

||<style="background-color:#FEB76D;":>'''Campo'''||<style="background-color:#FEB76D;":>'''Valore'''||
|| Tipo di servizio: || SSH ||
|| Server: || «indirizzoIPRemoto» ||
|| Nome utente: || «nomeutenteRemoto» ||
|| Nome da usare per la connessione: || a scelta dell'utente ||
È possibile anche creare un segnalibro in modo da non dover ripetere questa procedura ad ogni sessione, ma è utile farlo solo quando l'indirizzo IP del computer remoto non cambia mai (per esempio un sito Internet o un computer nella propria rete locale).

Un modo alternativo è inserire direttamente l'indirizzo in una finestra di ''''Esplorazione file'''', secondo il seguente modello:
{{{
ssh://nomeutenteRemoto@indirizzoIP
}}}

= Utilizzo da terminale =

== Copia di file ==

Per copiare un file dal proprio computer locale a un computer remoto, usare il comando '''scp''' secondo il modello 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.

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

== Eseguire un comando su un computer remoto ==

Per eseguire un singolo comando su un computer remoto, usare il comando '''ssh''' secondo il seguente modello:
{{{
ssh nomeutenteRemoto@indirizzoIPRemoto comando
}}}

== 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'accesso come utente '''root''' è disabilitato. 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, [:AmministrazioneSistema/Sudo#abilitare_login_root:abilitare l'utente root] sul computer remoto.

= Utilizzo di altre applicazioni con interfaccia grafica =

I seguenti programmi, scaricabili tramite il gestore dei pacchetti, utilizzano un'interfaccia grafica per gestire più facilmente tutti i vari comandi SSH più comunemente usati.

 * '''Putty'''; gestore grafico del login, che restituisce una finestra terminale dell'utente remoto da cui operare solo tramite riga di comando.
 * [:/SecPanel:SecPanel]; gestore completamente grafico sia del login, della gestione dei file e delle cartelle locali e remote; gestisce singolarmente sia le chiavi che l'agente SSH.

= X11 Forwarding =

== Prerequisiti ==

Può essere utile aprire e utilizzare alcune applicazioni grafiche sul computer remoto. Al posto di alternative come VNC e XDMCP, le quali non supportano la cifratura, è possibile utilizzare l'X11 Forwarding. Gli unici requisiti del computer locale sono una connessione abbastanza veloce con il computer remoto (una ADSL standard dovrebbe andare bene) e l'installazione di base del server X11, mentre non ci sono requisiti particolari per il computer remoto.
Potrebbe inoltre essere necessaria l'installazione del pacchetto '''xauth''' sul computer locale.

== Sintassi ==

Prima di tutto è necessario autorizzare il server X11 del computer locale ad accettare connessioni in entrata dal computer remoto, quindi aprire una finestra di terminale e digitare:

{{{
xhost +
}}}


||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5% ^>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">''Se l'esecuzione di questo comando dovesse fallire sarà necessario installare il pacchetto xauth.'' ||

Successivamente per collegarsi al computer remoto digitare:

{{{
ssh -X utenteremoto@computerremoto
}}}

== Note per Windows ==

La maggior parte dei software SSH per Windows non supporta nativamente il Forwarding X11. In questo caso si può utilizzare Cyg``Win, che contiene il port di numerosi software linux, tra quali SSH (sia client che server) e server X11.

[[Anchor(sicurezza)]]
= 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.

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

Insieme alla chiave privata viene creata anche la chiave pubblica (localizzata in `~/.ssh/id_dsa.pub` sul computer locale), liberamente distribuibile; in particolare la chiave pubblica la si deve inserire nel computer remoto al quale si vuole accedere, usando il comando `ssh-copy-id` dal computer locale secondo il modello seguente:
{{{
ssh-copy-id -i percorsoLocaleChiavePubblica nomeUtenteRemoto@indirizzoIPRemoto
}}}
Quello che segue è un esempio:
{{{
ssh-copy-id -i ~/.ssh/id_dsa.pub mario@192.168.23.42
}}}

Se per qualche motivo non si riuscisse a usare il precedente comando, sarà necessario copiare manualmente l'intero contenuto del file `~/.ssh/id_dsa.pub` dal computer locale e aggiungerlo in coda al file `~/.ssh/authorized_keys` (senza sovrascrivere eventuali contenuti preesistenti) nella cartella utente sul computer remoto.

Una volta aggiunta la chiave pubblica sul computer remoto, non verrà più chiesta la password dell'utente del computer remoto (salvata in `/etc/password` del computer remoto), ma verrà chiesta la passphrase conservata in locale.

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 [:Ufficio/EditorDiTesto:Editor di testo] con i [:AmministrazioneSistema/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.

||<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 [:Programmazione/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 grafico SSH, realizzato anche 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 =

 * [http://www.openssh.org/ Sito ufficiale del progetto]
 * [wiki:Ubuntu/SSHHowto Pagina sul wiki internazionale]

----
CategoryInternet CategorySicurezza CategoryServer

BR Indice(depth=1)

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)

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 [:AmministrazioneSistema/InstallareProgrammi:installare] il pacchetto openssh-server.

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

Inoltre si dovranno conoscere il nome e la password di una utenza presente nel computer remoto.

Anchor(accessoremoto)

Esplorare i file di un computer remoto

Per esplorare i file di un computer remoto (con server ssh attivo) come se si trovassero nel proprio computer locale, scegliere Risorse -> Connetti al server..., quindi inserire i seguenti dati:

Campo

Valore

Tipo di servizio:

SSH

Server:

«indirizzoIPRemoto»

Nome utente:

«nomeutenteRemoto»

Nome da usare per la connessione:

a scelta dell'utente

È possibile anche creare un segnalibro in modo da non dover ripetere questa procedura ad ogni sessione, ma è utile farlo solo quando l'indirizzo IP del computer remoto non cambia mai (per esempio un sito Internet o un computer nella propria rete locale).

Un modo alternativo è inserire direttamente l'indirizzo in una finestra di 'Esplorazione file', secondo il seguente modello:

ssh://nomeutenteRemoto@indirizzoIP

Utilizzo da terminale

Copia di file

Per copiare un file dal proprio computer locale a un computer remoto, usare il comando scp secondo il modello 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.

Eseguire un comando su un computer remoto

Per eseguire un singolo comando su un computer remoto, usare il comando ssh secondo il seguente modello:

ssh nomeutenteRemoto@indirizzoIPRemoto comando

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'accesso come utente root è disabilitato. 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, [:AmministrazioneSistema/Sudo#abilitare_login_root:abilitare l'utente root] sul computer remoto.

Utilizzo di altre applicazioni con interfaccia grafica

I seguenti programmi, scaricabili tramite il gestore dei pacchetti, utilizzano un'interfaccia grafica per gestire più facilmente tutti i vari comandi SSH più comunemente usati.

  • Putty; gestore grafico del login, che restituisce una finestra terminale dell'utente remoto da cui operare solo tramite riga di comando.

  • [:/SecPanel:SecPanel]; gestore completamente grafico sia del login, della gestione dei file e delle cartelle locali e remote; gestisce singolarmente sia le chiavi che l'agente SSH.

X11 Forwarding

Prerequisiti

Può essere utile aprire e utilizzare alcune applicazioni grafiche sul computer remoto. Al posto di alternative come VNC e XDMCP, le quali non supportano la cifratura, è possibile utilizzare l'X11 Forwarding. Gli unici requisiti del computer locale sono una connessione abbastanza veloce con il computer remoto (una ADSL standard dovrebbe andare bene) e l'installazione di base del server X11, mentre non ci sono requisiti particolari per il computer remoto. Potrebbe inoltre essere necessaria l'installazione del pacchetto xauth sul computer locale.

Sintassi

Prima di tutto è necessario autorizzare il server X11 del computer locale ad accettare connessioni in entrata dal computer remoto, quindi aprire una finestra di terminale e digitare:

xhost +

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

Se l'esecuzione di questo comando dovesse fallire sarà necessario installare il pacchetto xauth.

Successivamente per collegarsi al computer remoto digitare:

ssh -X utenteremoto@computerremoto

Note per Windows

La maggior parte dei software SSH per Windows non supporta nativamente il Forwarding X11. In questo caso si può utilizzare CygWin, che contiene il port di numerosi software linux, tra quali SSH (sia client che server) e server X11.

Anchor(sicurezza)

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; in particolare la chiave pubblica la si deve inserire nel computer remoto al quale si vuole accedere, usando il comando ssh-copy-id dal computer locale secondo il modello seguente:

ssh-copy-id -i percorsoLocaleChiavePubblica nomeUtenteRemoto@indirizzoIPRemoto

Quello che segue è un esempio:

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

Se per qualche motivo non si riuscisse a usare il precedente comando, sarà necessario copiare manualmente l'intero contenuto del file ~/.ssh/id_dsa.pub dal computer locale e aggiungerlo in coda al file ~/.ssh/authorized_keys (senza sovrascrivere eventuali contenuti preesistenti) nella cartella utente sul computer remoto.

Una volta aggiunta la chiave pubblica sul computer remoto, non verrà più chiesta la password dell'utente del computer remoto (salvata in /etc/password del computer remoto), ma verrà chiesta la passphrase conservata in locale.

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 [:Ufficio/EditorDiTesto:Editor di testo] con i [:AmministrazioneSistema/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 [:Programmazione/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 grafico SSH, realizzato anche 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