Network filesystems & file services.

Transferir ficheros de forma segura por la red.

Introducción.

Actualmente las herramientas más usadas para transferir ficheros de forma segura por la red (excluyendo montaje de sistemas de ficheros remotos) son scp y sftp. Adicionalmente podemos usar también para tareas concretas rsync especificándole que use ssh.

Utilidad scp

Scp se puede usar para tranferir ficheros entre servidores sobre una conexión segura y encriptada. La sintaxis es sencilla:

scp  origen destino

Origen o destino será una rutal local o bien otro servidor que tendremos que especificarlo en el modo clásico de ruta a otro sistema.

usuario@servidor:/ruta/fichero

Algunos ejemplos:

  • Copiar desde un filesytem local a un servidor remoto:

      scp  fichero.doc   [email protected]:/home/usuario1/docs/fichero.doc
    
  • Copiar desde un servidor remotor sería similar

      scp [email protected]:/home/usuario1/docs/fichero.doc  fichero.doc
    

Algunos parámetos adicionales para el comando scp

  • -r El más útil. Copiar recursivamente. Para transferencia de directorios con todo su contenido.
  • -v Si queremos ver el debug de todo lo que va haciendo al realizar una transferencia
  • -C Realiza compresión de los archivos previamente a la tranferencia. Reduce el uso de red pero aumenta el uso de los recuros de los servidores para comprimir / descomprimir.
  • -I Limita el ancho de banda a usar en la transferencia. Útil si no queremos que la citada transferencia coma mucho ancho de banda.

Utilidad sftp

La utilidad sftp se puede usar para abrir una sesión segura e interactiva con un servidor FTP. Si puedes conectarte con un sistema usando ssh puedes conectarte por sftp ya que este está basado en ssh (forma parte de hecho del mismo grupo / paquete de utilidades: openssh-clients). En Centos 7 está configurado por defecto en /etc/ssh/sshd_config mediante la línea:

Subsystem sftp  /usr/libexec/openssh/sftp-server

La sintaxis para realizar una conexión contra un servidor remoto sería:

sftp usuario@servidor

Una vez conectados el juego de comandos a usar es el clásico de ftp: help, ls, cd directorio, mkdir directorio, rmdir directorio y put y get para transferir ficheros, exit para cerrar la conexión…

Nos conectmaos con el servidor

sftp usuario@sistema_remoto

El comando más útil que debemos conocer es help, que nos mostrará todos los comandos disponibles.

sftp> help
Available commands:
bye                                Quit sftp
cd path                            Change remote directory to 'path'
....

Algunos ejemplo de los comandos más habituales para ver en que directorio estamos y listar ficheros. IMPORTANTE: para referirnos a nuestro equipo local basta con anteponer una “l” de local al comando como vemos:

sftp> pwd
Remote working directory: /root

sftp> ls
anaconda-ks.cfg     scripts       

sftp> lpwd
Local working directory: /home/javier

sftp> lls
all.csv            hosts.csv        proyectos
Biblioteca de calibre    Imágenes        Público

Cambiar de directorio, crear, borrar será con los comandos habituales

sftp> mkdir test01
sftp> cd test01
sftp> cd ..
sftp> pwd
Remote working directory: /root

sftp> rm test01
Removing /root/test01

sftp> rmdir test01
sftp> 

Para copiar ficheros remotos a local usaremos el comando “get”.

sftp> get yum.conf yum.conf.bcklocal
Fetching /etc/yum.conf to yum.conf.bcklocal
/etc/yum.conf                 100%  970     1.0KB/s   00:00 

Podemos copiar ficheros o directorios recursivamente. Si no especificamos el destino local nos creará un directorio en el directorio actual.

sftp> get -r yum.repos.d yum.repos.d.bcklocal
Fetching /etc/yum.repos.d/ to yum.repos.d.bcklocal
Retrieving /etc/yum.repos.d
/etc/yum.repos.d/CentOS-Base.repo             100% 1664     1.6KB/s   00:00    
/etc/yum.repos.d/CentOS-Sources.repo          100% 1331     1.3KB/s   00:00    
/etc/yum.repos.d/CentOS-Vault.repo            100% 1002     1.0KB/s   00:00    

Para copia de local a remoto usaremos el comando put que trabaja exactamente igual que get.

sftp> lpwd
Local working directory: /home/javier/Documentos
sftp> lls
ebooks
web2py_manual_5th.pdf
sftp> put web2py_manual_5th.pdf 
Uploading web2py_manual_5th.pdf to /root/web2py_manual_5th.pdf
web2py_manual_5th.pdf                         100% 6582KB   6.4MB/s   00:01   

Podemos ejecutar un comando en una shell local sin salirnos de sftp con “!”

sftp> python -V
Invalid command.
sftp> !python -V
Python 2.7.9

Para salir de sftp podemos usar exit o bye

Utilidad rsync

Rsync no parece que sea una cuestión de examen, se puede obviar.

Rsync tiene una sintaxis muy similar a scp pero con un amplio abanico de parámetros. La especialidad de rsync es su habilidad de analizar los ficheros y copiar solo los que tienen cambios entre origen y destino. Esto puede suponer reducir mucho tiempo y uso de la red en copias habituales recursivas entre sistemas. Basicamente el interés aquí es saber que puede usarse con ssh para transferir archivos de forma segura. Se instala como siempre:

yum install rsync

La sintaxis sería:

rsync -parametros  origen destino

Ejemplo:

rsync -avz -e ssh /directorio/fichero  usuario@servidor:/directorio/fichero

Los parámetos más habituales suelen ser:

  • -e ssh Obligatorio si queremos tranferir ficheros de forma segura.
  • -a Modo archivo. Preserva permisos de ficheros y no sigue enlaces simbolicos (no copia destino de estos)
  • -v Verbose
  • -z Activar compresión (previo a la transferencia)

En la ayuda del comando vienen muchos ejemplos pero estos son los que se usan habitualmente.

X11 Forwarding.

X11 Forwarding no parece que sea una cuestión de examen, se puede obviar.

Podemos también necesitar ejecutar aplicaciones X en un servidor de forma segura. Para ello podemos abrir una sesión X11 sobre una conexión SSH. Para ello primero nos conectamos por SSH a la máquina desde la que queremos ejecutar la aplicación X.

ssh -Y usuario@servidor

Una vez autentificados ejecutamos la aplicación X en nuestro servidor X.

Firefox &

Ayuda local.

Las páginas de man de los comandos nos ofrecerán la ayuda necesaria.

  • man scp - Ayuda de comando scp que es muy sencillo.
  • man sftp - Buena ayuda de uso de parámetros y comandos interactivos. Una vez dentro de sftp podemos invocar la ayuda con help y es bastante clarificadora.
  • man rsync - Muy buena ayuda con muchos ejemplos útiles.