Il protocollo ssh (secure shell) serve per avere comunicazioni "sicure" tra diversi computer via la rete ethernet.
Il pacchetto ssh, più precisamente OpenSSH, è compreso in ogni distribuzione Linux per default.
Per aprire una sessione remota sul server di dipartimento dare il comando
ssh -X username@didattica1.aquila.infn.it
e poi digitare la password quando richiesta.
In questo comando, username è il vostro nome utente (uid), e la
flag -X serve per aprire il canale X11 alle comunicazioni.
Questa apertura vi permetterà di usare gnuplot, o più in
generale di chiedere al computer remote (in questo caso didattica1) di
aprire un terminale X11 sullo schermo del vostro computer.
Invece per trasferire files da e/o verso il server di dipartimento si hanno due opzioni:
1) si usa il protocollo sftp (secure file transfer protocol):
sftp username@didattica1.aquila.infn.it
digitare la passwd quando richiesto
In questo modo ci si collega su didattica1 ma non in modo grafico. Il
prompt all'interno dell'ambiente sftp è ">" (come quello di
gnuplot). All'interno di questo ambiente si possono usare una serie di
comandi tipo:
- "cd" (change directory) per andare da una directory all'altra ("lcd" per fare la stessa cosa sul computer locale)
- "ls" per vedere il contenuto della directory corrente ("lls" per il computer locale)
- "pwd" per vedere l'indirizzo completo della directory corrente ("lpwd" per lo stesso comando sul computer locale)
- "put" per copiare un file dal computer locale (front-end) al computer remoto
- "get" per compiare un file dal computer remoto al computer locale
- ................
Come esempio consideriamo il caso in cui voglio copiare il file
"quiquoqua.dat", che si trova all'indirizzo
"/var/pippo/pluto/paperino" sul computer locale, all'indirizzo
"/home/topolino/paperino/" sul computer remoto. Inoltre voglio copiare
dal computer remoto al computer locale il file "paperina.dat".
Ecco la sequenza dei comandi necessari:
1) cd /var/pippo/pluto/paperino
2) sftp username@didattica1.aquila.infn.it
3) passwd quando richiesta
4) > cd /home/topolino/paperino
5) > put quiquoqua.dat
6) > get paperina.dat
7) > exit
E' anche possibile usare le cosidette wildcards, ossia se voglio
trasferire una serie di files che hanno tutti una parte in comune nel
nome (ad esempio tutti i files di tipo .ps) posso usare il seguente
comando: " > put *.ps"
2) si usa il comando scp (secure copy)
scp /var/pippo/pluto/paperino/quiquoqua.dat username@didattica1.aquila.infn.it:/home/topolino/paperino/
sarà richiesta la passwd di didattica1 per eseguire la copia. In
questo modo non si apre nessuna sessione interattiva su didattica1, se
non per il tempo necessario per la copia.
Il comando scp è molto potente perché permette i copiare
interi alberi di directories da un computer ad un altro (basta che i
computers non abbiano sistemi operativi Windows). Se per esempio voglio
copiare il contenuto della cartella "/var/pippo" dal computer locale a
quello remoto userò il seguente comando
scp -rp /var/pippo username@didattica1.aquila.infn.it:
notare che in questo comando:
- la flag -r indica che la copia è ricorsiva, ossia
discende nelle directories interne alla directory corrente (/var/pippo)
- la flag -p copia i files con le loro carattestiche (data, permessi di accesso etc.)
il contentuo della directory locale /var/pippo verrà copiato
nella home directory dell'utente. Se avessi voluto metterlo altrove
avrei dovuto specificare l'indirizzo sul computer remoto a partire
dalla home directory dell'utente di seguito ai : nel nome dell'host
remoto (esempio: "scp -rp /var/pippo username@didattica1:paperino/" in
questo modo i file andranno copiati nella directory
/home/username/paperino sul computer remoto. Attenzione la directory
sull'host remoto deve esistere, se non esiste il comando termina con
messaggio di errore e nessuna copia viene effettuata).
Un altra opzione per trasferire interi alberi di directories tra
computer diversi è usare il comando tar. In questa filosofia si
produce un archivio di files (magari compresso), si trasferisce il file
risultante con sftp o scp, ci si collega interattivamente sul host
remoto e si spacchetta l'archivio appena trasferito.
Le sequenza di comandi per fare questo è:
sull'host locale
cd /var/
tar cvfz pippo/ archivio.tgz
(questo comando crea il file archivio.tgz che contiene un
archivio di tutti i files nella directory "pippo" e nelle directories
sottostanti)
scp archivio.tgz username@didattica1.aquila.infn.it:paperino/
(copia il file archivio.tgz nella directory
/home/username/paperino sull'host remoto)
ssh username@didattica1.aquila.infn.it
(si apre una sessione ssh interattiva sull'hot remoto)
sull'host remoto
cd paperino
(si va nella directory
/home/username/paperino)
tar xvfz archivio.tgz
(decomprime e spacchetta completamente il file archivio.tgz,
ricreando sull'host remoto tutto l'albero delle directories).
rm archivio.tgz
(rimuove il file archivio.tgz dall'host
remoto)
Infine è bene notare che il comando scp
si può usare anche in senso inverso, ossia per trasferire files
dall'host remoto a quello locale. In questo caso basta invertire la
sequenza delle opzioni nel comando.
Esempio: scp -rp username@didattica1.aquila.infn.it:paperino/ ./
con questo comando copio tutto il contenuto della directory
/home/username/paperino/ nella directory in cui mi trovo
sull'host locale.
Nota per utenti Windows:
Coloro che utilizzano Windows possono cercare un applicativo ssh per
windows. Con google se ne trovano molti, anche gratuiti. Alcuni esempi:
sshwindows: http://sshwindows.sourceforge.net/
putty: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
Guardare il sito http://www.jfitz.com/tips/ssh_for_windows.html per un confronto
Un applicativo che forse funziona sotto windows è che usa le
icone è Filezilla. Mi dicono che sia ottimo ma io non ho mai
provato.
Una possibile alternativa è avere un cd con Ubuntu-Live
distribution, una distribuzione Linux Live, ossia che non è
necessario installare sul computer. Il computer deve poter fare il boot
dal CD. Si inserisce il CD con la distribuzione e si seleziona la
modalità Live. Una volta fatto il boot il computer sarà
in ambiente Linux e si possono usare il terminale e i comandi in
ambiente Linux sopra descritti.