To top

Spesso la riga di comando risulta più veloce e comoda dei programmi con interfaccia grafica: il comando scp può essere installato o è disponibile sui principali sistemi operativi
FileZilla gira su Windows, MacOS X e Linux: download gratuito, licenza GPL

Trasferire file via SSH dai laboratori informatici del Paolotti o della Torre Archimede

Uso immediato

Se, ad esempio, siete in Torre per poter accedere a dei file presenti nella vostra home del Paolotti, dovete collegarvi con un client scp/sftp (entrambi i protocolli sfruttano il canale ssh) ad ssh.studenti.math.unipd.it:

  • A tutti i programmi vanno forniti username e nome host al quale collegarsi (in questo esempio ssh.studenti.math.unipd.it; viceversa sshtorre.math.unipd.it); per una lista completa ed aggiornata dei server vedi qui; vedi invece qui per la relativa chiave ssh;
  • Nei programmi grafici per il trasferimento file, spesso vi troverete con una finestra con due aree: ad esempio con “gftp” o “SSH Secure File Transfer Client” nell'area di sinistra ci sono i file del pc locale mentre nella finestra di destra i file presenti sulla macchina remota;
  • In detti programmi grafici, per trasferire un file o una cartella tra le due parti, sia in Linux che in Windows, potete usare le frecce presenti tra le 2 aree, o il drag and drop.


To top

File locale VS file remoto

Identificare i file

È estremamente opportuno aver chiaro in mente che un file può essere:

  • locale cioè risiedere sulla macchina della quale stiamo cercando di connetterci; normalmente (ad esempio, a meno di ssh fatti in serie) di tale macchina stiamo usiamo schermo, tastiera e mouse (ammesso che la nostra machina abbia tali dispositivi); qui non importa distinguere fra unità di memorizzazione interne come dischi fissi o esterne come chiavette usb e memorie SD
  • remoto cioè risiedere sulla macchina verso cui stiamo tentando di connetterci

Per copiare i file dobbiamo normalmente avere un'idea di dove i file si trovino (tanto sulla macchina remota che quella locale) ed arrivare a conoscerne il percorso (in inglese path). A seconda dei sistemi operativi esso può avere una forma diversa; ad esempio:

path vs O.S. - un esempio (attenzione: l'argomento del post è un'altro)
OSpath
Vista & Windows 7 C:\Users\nomeUtente\AppData\Roaming\FileZilla\sitemanager.xml
Mac OS X /users/nomeUtente/.filezilla/sitemanager.xml
Linux/home/nomeUtente/.filezilla/sitemanager.xml

Mentre in una eventuale shell comandi del computer locale sarà sufficiente il path come in tabella ad identificare i file locali, nei comandi per il traferimento file via ssh sarà invece necessario un URI-URL apposito o qualche altra convenzione o ausilio dell'interfaccia grafica.

Direzione del traferimento

Una volta stabilita la connessione possiamo fondamentalmente copiare i file in due direzioni:

  • dalla macchina locale alla macchina remota
  • viceversa

Attenzione quando ci sono due server ssh

Quando c'è un server ssh a disposizione da ciascun lato della trasmissione e ciascuno dei due presenta gli stessi file della rete cui appartiene, come nel caso dei server ssh dei laboratori di Torre Archimede e Plesso Paolotti, bisogna fare attenzione, nella particolare sessione comandi che si sta usando, a quello che è remoto e quello che è locale.

Indipendentemente dalla macchina di cui si usano schermo e periferiche di input (mouse e tastiera) se la vostra shell venisse da una sessione comandi remota la definizione di remoto e locale sarebbe infatti scambiata.

Trasferimenti equivalenti usando server diversi

Negli esempi sotto nomefile_in_torre è un file che si vuole copiare dal laboratorio della Torre Archimede al laboratorio del Plesso Paolotti, lì usando come destinazione un file (o una cartella) di nome nomecopia_al_paolotti. Viceversa a nomi invertiti.
Prompt nomeutente@t68 il lato remoto è @ssh.studenti.math.unipd.it:
Copia da Torre a Paolotti (da locale a remoto):
scp nomefile_in_torre nomeutente@dip191.studenti.math.unipd.it:nomecopia_al_paolotti
Copia da Paolotti a Torre (da remoto a locale):
scp nomeutente@dip191.studenti.math.unipd.it:nomefile_al_paolotti nomecopia_in_torre
Ovviamente i trasferimenti possono essere fatti a questa maniera (senza aprire sessioni comandi remote) quando si usa una delle macchine del laboratorio della Torre Archimede.
Prompt nomeutente@dip191 - il lato remoto è @sshtorre.math.unipd.it:
Copia da Torre a Paolotti:
scp nomeutente@sshtorre.studenti.math.unipd.it:nomefile_in_torre nomecopia_al_paolotti
Copia da Paolotti a Torre:
scp nomefile_al_paolotti nomeutente@sshtorre.studenti.math.unipd.it:nomecopia_in_torre
Ovviamente i trasferimenti possono essere fatti a questa maniera (senza aprire sessioni comandi remote) quando si usa una delle macchine dei laboratori del Plesso Paolotti.

Uso obbligato di uno specifico server ssh

Dal Wi-Fi o da casa

Quando il computer che si sta usando non appartiene a nessuno dei laboratori, né del Plesso Paolotti né della Torre Archimede, si cade solo in uno degli esempi sopra a seconda di dove si trova o dovrà si trovare il file che si vuole trasferire.

Per la precisione, nel caso nella propria macchina girasse un server ssh sarebbe ancora possibile eseguire il trasferimento dei file usando come lato remoto la propria macchina. È però abbastanza probabile che il firewall del Wi-Fi o di certi provider fermi le connessioni dirette alla propria macchina: potrebbe quindi essere necessario prima collegarsi ai server dell'aula, impostando contemporaneamente un tunnel ssh con l'opzione -R. Pagina per informazioni sui tunnel.


To top

scp dalla riga di comando

Ulteriore premessa sui percorsi delle cartelle

I percorsi (in inglese path) di file e cartelle (in inglese directory) possono essere relativi (generalmente alla home directory o alla working directory) o assoluti.

Da Wikipedia: “A path, the general form of a filename or of a directory name, specifies a unique location in a file system. A path points to a file system location by following the directory tree hierarchy expressed in a string of characters in which path components, separated by a delimiting character, represent each directory...” ed ancora  “Systems can use either absolute or relative paths. A full path or absolute path is a path that points to the same location on one file system regardless of the working directory or combined paths. It is usually written in reference to a root directory.”

Con scp i percorsi remoti sono sono assoluti (se e solo se iniziano con il carattere “/”) o relativi alla home directory (ovviamente quella remota).

Per capire quale è la propria home directory (dentro i server ssh dei laboratori) nel caso non lo si sappia e si voglia usare un percorso assoluto potrebbe essere necessario aprire una sessione comandi remota e dare, per esempio:

  • il comando cd seguito da pwd
  • il comando finger nomeutente
  • il comando (la variabile è specifica della bash) echo $HOME

Rimane comunque la possibilità di usare un percorso relativo e non quello assoluto.

Uso di scp

  1. Tutte le soluzioni elencate sotto rendono facile trasferire file una volta ottenuto il prompt dei comandi (dipende dal sistema operativo quale).
  2. All'interno del prompt dei comandi dare il comando scp (il nome esatto del programma può essere diverso da scp se si è installato un client ssh diverso) seguito da giusti parametri.
  3. I parametri sono separati uno dall'altro da almeno uno spazio; viceversa se appare uno spazio nei nomi dei file o delle cartelle può essere necessario usare le doppie virgolette.
  4. Per sapere quali sono i parametri giusti bisogna soprattutto avere chiaro l'obbligo di scrivere almeno una origine ed una destinazione (è l'ultimo parametro); similmente al comando cp di UNIX se la destinazione è una cartella (in inglese directory) ci possono essere più file/cartelle origine
  5. Le origini/destinazioni vanno distinte fra file locali (path secondo le convenzioni del sistema operativo locale) e remote (path usualmente nella forma nomeutente@nomecomputer:percorso/nomecopia)
  6. Dovrebbe essere supportata la scorciatoia “.” per indicare la cartella corrente del computer locale; parimenti dovrebbe essere supportata la scorciatoia “:”  (anche senza percorso/nomecopia) per indicare la home del computer remoto (se il percorso non è assoluto ovvero non inizia con “/” ); non usare invece la tilde (“~”) che è un carattere eventualmente espanso dalle shell (ad esempio la bash)
  7. Il programma potrebbe capire che il percorso riguarda una macchina remota solo se si mette il simbolo “:”; attenzione anche a mettere il nome del proprio utente remoto come nomeutente (può essere omesso se identico)
  8. Possono essere utili le opzioni -r per copiare ricorsivamente le cartelle e -p per preservare i timestamp (utile a capire quando si ha scritto davvero un programma sorgente) e i permessi dei file (soprattutto fra sistemi operativi dello stesso tipo)

Dovrebbe di conseguenza essere chiaro come interpretare gli esempi che diamo:

  • scp -p -r mia_cartella_locale nomeutente@ssh.studenti.math.unipd.it:esercizi
  • scp -p    nomeutente@ssh.studenti.math.unipd.it:file_remoto   cartella_locale

OpenSSH

OpenSSH è un programma gratuito e libero (vedere la Copyright Policy del progetto OpenBSD di cui è parte).

Dal sito ufficiale: OpenSSH is a FREE version of the SSH connectivity tools that technical users of the Internet rely on.

  • le distribuzioni di Linux per desktop, notebook e netbook normalmente installano un client ssh già di default, usualmente proprio OpenSSH
  • dovrebbe essere facile trovare un emulatore terminale (xterm, aterm, kterm, terminator, konsole, gnome-terminal) da cui lanciare il comando scp
  • anche in Mac OS X il client ssh preinstallato è OpenSSH
  • lanciare il comando scp dal il prompt dei comandi, a sua volta in: Application ?Utility?Terminal.App

In Linux, Mac OS X e Cygwin il programma dovrebbe risultare installato in una cartella inclusa nel PATH della shell (nel caso di Cygwin la bash o altre shell portate da Linux, quindi stiamo parlando del Prompt dei Comandi di Windows - CMD.EXE); si potrà quindi eseguire il comando con il semplice:

scp

seguito da tutti i parametri e da tutte le opzioni nececessarie (scp non è un programma interattivo, vedi il paragrafo “Uso di scp”).

Alternative per Windows

Il “Prompt dei comandi” nelle versioni da Windows NT in poi (Windows XP, Vista, Windows 7) è cmd.exe; può essere fatto partire dal menu Start (?Tutti i programmi ? Accessori) o con la scorciatoia tasto Windows + R (vanno premuti assieme il tasto con il logo di Windows e la lettera R, dopodichè si scrive cmd.exe senza bisogno di scrivere anche il path).

PuTTY

Consigliamo PuTTY che è gratuito e libero, disponibile a scelta dell'utente anche nella versione portable (non ufficiale).

Una volta installato il programma, si dovrà eseguire un comando (dove negli esempi scriviamo solo “scp”) specificando un path simile a:

"C:\Program Files\PuTTY\pscp.exe"

seguito da tutti i parametri e da tutte le opzioni nececessarie (scp non è un programma interattivo, vedi il paragrafo “Uso di scp”).

Per completezza aggiungiamo che alcune distribuzioni, per lo meno Ubuntu, rendono disponibile PuTTY anche sotto Linux.

SSH Secure Shell di SSH Communications Security

Non consigliamo SSH Secure Shell di SSH Communications Security che per la comodità di avere un unico pacchetto capace di trasferire file e fornire sessioni comandi remote.

Purtroppo si tratta di un programma commerciale la cui versione corrente ha un periodo di valutazione limitato a 45 giorni.

La versione scaricabile dalla pagina relativa a ssh del sito del Dipartimento:

  • è piuttosto datata e potenzialmente insicura
  • may not be used for any commercial purpuses
  • ha un bug (irrisolto?) nella gestione dei tunnel quando il sistema operativo è più nuovo di Windows XP (Vista e Windows 7)

Una volta installato il programma, si dovrà eseguire un comando (dove negli esempi scriviamo solo “scp”) specificando un path simile a:

"C:\Program Files\SSH Communications Security\SSH Secure Shell\scp2.exe"

seguito da tutti i parametri e da tutte le opzioni nececessarie (scp non è un programma interattivo, vedi il paragrafo “Uso di scp”).

L'opzione -l per specificare la login remota funziona solo con PuTTY ed OpenSSH.


To top

FileZilla gira su Windows, MacOS X e Linux: download gratuito, licenza GPL
Nuovo Sito
Inserisci password
Computer\HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys (prima)
Chiave host sconosciuta (solo al primo accesso)
Computer\HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys (dopo)
Drag and drop...

sftp grafico con Filezilla

Filezilla è un programma gratuito e libero (licenza GPL). Il fatto che sia disponibile per i maggiori sistemi opertatvi per PC rende consigliabile mostrare subito il suo uso piuttosto che “nasconderlo” nelle sottopagine sequenti.

Guida passo passo

Nell'esempio sotto mostriamo come trasferire file tra il proprio computer (nell'esempio un computer con Winwdows Vista) ed il server ssh ssh.studenti.math.unipd.it.

Nuovo sito

File ? Gestore Siti... ? Nuovo sito

  • rinominare Nuovo sito in ssh.studenti.math.unipd.it o altro identificabile
  • Host: ssh.studenti.math.unipd.it
  • Porta: 22
  • Protocollo: SFTP - SSH File Transfer Protocol
  • Tipo di accesso: Richiedi password
  • Utente: mettete qui la vostra login (detta anche username o nome utenete)

Inserisci password

File ? Gestore Siti... ? [selezionare ssh.studenti.math.unipd.it o il nome dato] ? Connetti

  • Ricorda la password per questa sessione: (lasciare il segno di spunta)

Avvertenza per la prima connessione

Non prendere mai sottogamba il rischio di aggiungere all'elenco dei siti affidabili un sito sconosciuto, anche se sembra quello dei laboratori. Non solo potreste aver commesso un errore di battitura nel suo indirizzo ma qualcuno nelle reti che attraversate potrebbe star perpetrando un attacco man in the middle.

Come si vede dagli screenshot dell'editor del Registro di sistema (regedit), almeno sotto Windows, le due versioni standard di FileZilla e PuTTY (discorso a parte per le versioni portable) condividono le stesse chiavi di registro che possono quindi essere installate e rimosse alla stessa maniera.

Per il normale uso di FileZilla (nemmeno contestualmente alla prima connessione a un nuovo sito) non serve aprire regedit.

Drag and drop...

Come nella maggior parte del client grafici per il traferimento di file (almeno quelli che non sono integrati nel file browswer di sistema) la schermata principale è divisa verticalmente in due parti e si può usare il drag and drop. Qui: a sinistra il file sytem locale, a destra il file sytem remoto.

Notare che è stata automaticamente apera la home dell'utente: nel caso non succedesse vedere sopra le istruzioni per conoscerla (da una shell comandi remota).


To top

Istruzioni specifiche per connettersi via SSH con i vari sistemi operativi

Il nostro suggerimento rimane di usare la riga di comando con scp o il client grafico Filezilla (ripetiamo che è multipiattaforma) anche per renderci più facile il supporto e dover aggiornare meno istruzioni:

Detto altrimenti, seguite le istruzioni sopra coscienti di doverci mettere la vostra comprensione ed attenzione a cambiare quanto va cambiato se le versioni fossero vecchie e negli esempi venissero usati computer diversi da quelli dell'elenco dei server ssh delle aule.


To top

Sistemi mobili

  • VX ConnectBot per Android
  • PC Professione N.249 (dicembre 2011) per iOS cita FTP On the Go (client SFTP) e iSSH (client SSH).
  • JFtp

To top