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.