Compartir archivos vía SSHFS entre diferentes dispositivos

Hoy en día nos manejamos con diferentes dispositivos. Un ordenador (o varios), un móvil (o varios), una tableta (o varias)… aunque esta última algo menos. Y aunque solo dispongamos de uno de estos dispositivos, seguro que nos encontramos en la situación o la necesidad de compartir archivos con otros. Ya sea compartir una imagen, un archivo de audio o cualquier otro tipo de archivo. La cuestión es que disponemos de diferentes herramientas con la que compartir archivos en una red. Así podemos compartir archivos vía NFS o compartir archivos vía Samba, pero esto solo son algunos de los mecanismos disponibles para compartir archivos. Otra opción es compartir archivos vía SSHFS.

Compartir archivos vía SSHFS entre diferentes dispositivos

Compartir archivos vía SSHFS

Puede ser que no estés en tu red local, sino que te encuentres fuera de casa, por ejemplo. Puede ser que justo en ese momento necesites algún archivo que se encuentra en tu Raspberry Pi, por ejemplo. Hay una solución, te puedes conectar vía VPN y montar el directorio vía SSHFS.

Ciertamente, si solo necesitas un archivo, lo suyo es que te conectes vía SSH, lo copies y punto. Pero ¿y si por ejemplo tienes que editar varios archivos? ¿tienes que descargar cada uno de ellos, modificarlo, subirlo?¿Y si tienes que editar varias fotos?. Esiste una solución mucho mas simple, como he comentado en la introducción que consiste en compartir archivos vía SSHFS, para montar un sistema de archivos remoto vía SSH.

Instalación

SSHFS está disponible tanto para Linux, como para Mac OSX como para Windows. Igualmente puedes utilizar un cliente para Android como puede ser EasySSHFS. Sin embargo, yo me voy a centrar en Ubuntu, aunque es exactamente igual para cualquier derivada de Debian.

La instalación es tan sencilla como ejecutar la siguiente orden en un terminal,

sudo apt install sshfs

Ya está, ya tenemos instalado SSHFS en nuestro equipo. Ahora, ¿como compartir archivos vía SSHFS?

Preparando el sistema

Si quieres que cualquier usuario normal pueda montar y desmontar sistemas de archivos remotos SSHFS, necesitarás añadir el usuario al grupo fuse. Lo primero comprueba si existe el grupo fuse, para ello ejecuta la orden

cat /etc/group | grep 'fuse'

Si el grupo fuse no existe lo tendrás que crear ejecutando la orden,

sudo groupadd fuse

Una vez creado el grupo fuse te queda añadir a tu usuario al grupo. Para ello, ejecuta la orden,

sudo usermod -a -G fuse user

Montando sistemas de archivos remoto

El siguiente paso es salir y volver a entrar en la sesión. No necesitas reiniciar Ubuntu, tan solo salir y entrar en la sesión.

El siguiente paso para compartir archivos vía SSHFS es montar el sistema de archivos remoto. Para ello, lo primero que tenemos que hacer es crear el directorio donde queremos montar el sistema de archivos remoto. Esto lo hacemos como sigue,

  • Creamos el directorio
mkdir /home/lorenzo/sshfs

La forma de montar un sistema de archivos remoto vía sshfs, es utilizando la siguiente orden,

sshfs [usuario@]host:[directorio] punto_de_montaje [opciones]

Por ejemplo,

sshfs pi@192.168.1.48:pruebas_sshfs/ /home/lorenzo/pruebas_sshfs/

Suponiendo que tienes sistema de archivos remoto está en el directorio home configurado como rpi, lo que ejecutaríamos sería lo siguiente,

sshfs rpi:pruebas_sshfs/ /home/lorenzo/pruebas_sshfs/

Te recomiendo que le des un vistazo al artículo sobre configurar SSH. Seguro te va a ahorrar mucho trabajo y teclear tu contraseña y usuario en tus conexiones vía ssh.

En otro caso, puedes conectarte de la siguiente forma,

sshfs -o IdentityFile=~/.ssh/id_rsa pi@192.168.1.48:pruebas_sshfs /home/lorenzo/pruebas_sshfs/

Mientras que para desmontar el sistema de archivos remoto, tienes que ejecutar la siguiente orden,

-fusermount -u /home/lorenzo/pruebas_sshfs

Si no coinciden el uid del usuario remoto con el uid del usuario local, entondes es interesante añadir la opción idmpa=user. Si solo tienes un usuario en ambos equipos, lo normal, es que el uid de ambos sea el 1000. Sin embargo podría darse el caso de que fueran distintos.

Montado sistema de archivos remoto de forma definitiva

Hasta el momento vamos bien. Antes, para modificar un archivo teníamos que descargarlo a nuestro equipo, modificarlo y subirlo. Ahora solo tenemos que montar el sistema de archivos remoto y trabajar como si lo tuviéramos en nuestro propio equipo. No está mal.

Sin embargo, podemos ir un paso mas allá, y es que podemos montar el sistema de archivos remoto de forma definitiva. Para ello, tenemos que editar el archivo /etc/fstab en nuestro ordenador. De esta forma cada vez que iniciemos nuestro equipo se montará el sistema de archivos remoto que se encuentra en el servidor o en cualquier otro ordenador. Pero

Para editar el archivo /etc/fstab, por supuesto necesitas tener derechos de administrador. Puedes utilizar un editor como nano. Simplemente ejecutar,

sudo nano /etc/fstab

Ahora bien, al utilizar /etc/fstab para montar el sistema de archivos remoto debes proporcionar la clave ssh, de otra forma te pediría el nombre de usuario y contraseña. Para generar la clave y copiarla en el otro equipo, sigue las indicaciones del artículo sobre como configurar SSH.

Una vez hecho esto copia el archivo ~/.ssh/.ssh/id_rsa en /root/.ssh/

Ahora en el archivo indicado antes /etc/fstab añade la siguiente línea

sshfs#pi@192.168.1.48:pruebas_sshfs /home/lorenzo/pruebas_sshfs/ fuse defaults,idmap=user 0 0

Sobre el rendimiento o NFS vs SSHFS

Yo siempre he utilizado NFS frente a otras opciones. Sin embargo, quería comparar NFS frente a SSHFS, así que he buscado diferentes resultados en internet. Así por ejemplo en Admin Magazine concluyen que en el caso de lectura y escritura secuencial, la velocidad de NFS era prácticamente el doble que SSHFS. Mientras que para escritura aleatoria era prácticamente el mismo, y lectura secuencial NFS doblaba en velocidad a SSHFS. En esta otra página, algo mas antigua, y con equipos mas desactualizados que la anterior, los resultados son similares, pero resumidos de diferente forma. Para archivos del orden de 8GB el resultado es que tanto en lectura como en escritura NFS dobla en velocidad a SSHFS, mientras que en el caso de 1.4GB la velocidad de escritura es muy similar, y la de lectura algo mas del doble. Lo que viene a corroborar lo anterior.

Yo en mi caso he estado haciendo pruebas con un archivo de 1 GB aproximadamente, y a mi me daba la impresión que las velocidades eran muy similares. Pero, los estudios que he indicado antes, tienen un rigor, de la que mi prueba carece por completo.

Conclusión

Con esto ya tenemos otra opción para compartir archivos de forma relativamente sencilla. es decir, compartir archivos vía SSHFS. Como la solución de NFS, tiene la ventaja que la puedes dejar montada, y no te tienes que preocupar de subir y bajar archivos, etc. Es como si fuera parte de tu equipo. A partir de aquí, tienes todo un mundo de posibilidades para hacer copias de seguridad, y todo tipo de operaciones que se te puedan pasar por la cabeza.

En cuanto al tema de las copias de seguridad, y con independencia del sistema de archivos remoto que elijas, lo que si es cierto es que la operación no sería tenerlo siempre montado. Me refiero a que si siempre lo tienes montado, cualquier mal se transmitirá fácilmente. Lo suyo, sería montar el sistema de archivos remotos, hacer la copia de respaldo y desmontar el sistema de archivos remoto.


Más información