Compago

...free knowledge

 
  • Increase font size
  • Default font size
  • Decrease font size
Home Manuali Linux Trasferimento file con scp e port forwarding

Trasferimento file con scp e port forwarding

E-mail Stampa PDF

Per migliorare la sicurezza dei nostri sistemi informatici e` stato bloccato l'accesso diretto dall'esterno via ssh ed scp verso le macchine della nostra rete. L'unico accesso consentito e` quello verso la macchina gate.mio.it.
Da questa e` poi possibile connettersi alle altre macchine della nostra rete locale (vedi anche Tunnel ssh e Tunnel con putty).

Per effettuare una sessione interattiva su un computer della nostra rete, il metodo più` semplice e` connettersi a gate con ssh e poi da li` effettuare una nuova connessione con ssh verso la macchina desiderata, con un aggravio minimo per l'utente.

Se invece e` necessario scambiare files tra una macchina interna alla rete ed una esterna, risulta abbastanza scomodo (o addirittura improponibile per files di grandi dimensioni) fare una copia temporanea su gate.
Esistono pero` due possibilità per effettuare una copia diretta dei files:

  • Creare un port forwarding nel gateway
    In questo modo il computer interno è raggiungibile da quello esterno sulla porta ssh prestabilita (Vedi entrare in un pc dall'esterno). Se il gateway è un computer linux dovrete creare il port forwarding impostando l'ip_forward, per maggiori chiarimenti vedi la relativa guida.
    Se invece come gateway avete un router sul sito http://www.portforward.com/ troverete le indicazioni per i vari router disponibili sul mercato.
  • Lanciare scp dalla macchina interna verso quella esterna
    Questa opzione e` utilizzabile solo se sul computer esterno e` attivo un server ssh (tipicamente deve essere una macchina unix o linux, ma è possibile installare un server Openssh su windows) e se gli amministratori della rete su cui si trova tale macchina consentono la connessione ad essa tramite ssh/scp.
    Per fare questo tentativo basta collegarsi alla machina esterna solitamente sulla porta 22 e da li` provare a usare il comando scp per trasferire i files. Se funziona, questo e` il metodo più` semplice.
  • Usare un tunnel ssh
    Se il metodo precedente non e` utilizzabile, esiste una ulteriore possibilità per effettuare il trasferimento di files senza necessita` di copie intermedie. Il metodo consiste nell'usare una opzione di ssh che consente di redirigere una porta del computer esterno verso il computer interno col quale si vogliono scambiare files, passando pero` attraverso gate. La procedura da seguire e` questa:
    1. Se il computer esterno ha un sistema unix/linux, allora da una finestra terminale si da` il comando:

      ssh -L port:host.mio.it:22 user@gate.mio.it

      dove port e` un numero scelto a piacere purche` compreso tra 1025 e 65535, host e` il computer interno con il quale si vogliono scambiare i files e user e` il nome dell'account di gate che si vuole utilizzare.
      Con questo comando si redireziona la porta locale port verso la porta 22 (ssh) di host.mio.it. Può capitare che la porta locale sia già` utilizzata da altre applicazioni e di conseguenza si ottenga un messaggio di errore tipo "port already in use": in tal caso basta provare con un'altra porta.

      La stessa operazione si può` effettuare se il computer ha un sistema windows su cui e` installato win32ssh: si attiva il programma e poi si va in:
      Edit -> Settings -> Profile Settings -> tunneling
      e si aggiunge un "Outgoing tunnel" cliccando su "Add".
      Va specificata la listen port locale (il numero tra 1025 e 65535), l'host di mio.it col quale si vogliono scambiare files e la destination port (che deve essere 22).
      Poi si apre una connessione terminale con gate per attivare il tunnel.

    2. A questo punto e` possibile scambiare i files direttamente tra il computer esterno e quello interno alla nostra rete usando un client scp sul computer esterno con l'avvertenza di collegarsi a localhost sulla porta prescelta e non direttamente al computer interno (N.B.: bisogna usare letteralmente la parola "localhost").
      Se il computer esterno ha un sistema unix/linux, allora da un'altra finestra terminale si da il comando:

      scp -P port -oNoHostAuthenticationForLocalhost=yes user@localhost:path1 path2

      oppure:

      scp -P port -oNoHostAuthenticationForLocalhost=yes path1 user@localhost:path2

      a seconda che si voglia effettuare un trasferimento dal computer interno a quello esterno o viceversa.
      port e` la porta scelta in precedenza, user e` il nome dell'account sul computer interno, path1 e` il percorso del file da copiare e path2 e` quello di destinazione.

      L'opzione NoHostAuthenticationForLocalhost serve per evitare di salvare la chiave dell'host interno col nome di localhost, in modo da non ricevere messaggi di errore se si dovesse ripetere questa procedura verso un computer interno diverso.
      Questa opzione va omessa se si utilizza il vecchio protocollo ssh1

      Se il computer esterno ha un sistema windows, si lancia il programma "SSH Secure File Transfer Client" e ci si connette a localhost specificando lo user del computer interno a cui ci si vuol connettere e la port scelta in precedenza.
      Alla domanda se salvare la chiave dell'host nel database locale conviene rispondere "NO" per quanto spiegato prima.
      A questo punto si è collegati al computer interno e si possono scambiare files tramite l'interfaccia grafica.
Ultimo aggiornamento ( Venerdì 06 Maggio 2011 10:21 )  
Loading

Login




Chiudi