Montar directorios remotos mediante SSHFS

0
106

¡Hola amigas y amigos!

El Sistema de Archivos SSHFSSecure Shell FileSystem” nos permite acceder a directorios remotos de forma segura sobre el protocolo SSH. Puede sustituir perfectamente a un servidor de archivos FTP o al uso del SFTP para la transferencia de archivos desde y hacia un servidor remoto.

Ejemplo de uso del SSHFS

En el post anterior “Autenticación SSH con Llave Pública” usamos a los equipos siguientes:

  • Cliente: sysadmin.swl.fan
  • Servidor: leonardo-davinci.swl.fan
root@sysadmin:~# host sysadmin
sysadmin.swl.fan has address 192.168.10.1

root@sysadmin:~# host leonardo-davinci
leonardo-davinci.swl.fan is an alias for leonardo.swl.fan.
leonardo.swl.fan has address 192.168.10.12
  • Requisitos del lado del servidor:

El único requisito es que tenga instalado el paquete openssh-server o el ssh:

root@leonardo:~# apt install openssh-server
  • Usuarios sin privilegios del lado cliente:

Si vamos a utilizar la cuenta de un usuario normal para montar un sistema de archivos SSHFS, necesitamos hacer al usuario en cuestión miembro del grupo fuse.

El paquete fuseFileSystem in Userspace” no es mas que el sistema de archivos en el espacio de usuario. Proporciona una sencilla interfaz para que los programas ejecutados en el espacio de usuario, exporten un sistema de archivos virtual al kernel de Linux. Además, provee de un método seguro para que los usuarios sin privilegios puedan crear y montar sus propias implementaciones de sistemas de archivos.

El programa fuse se instala por defecto al instalar el sistema base del sistema operativo. En Debian, el grupo de usuarios fuse no se crea automáticamente y por tanto lo debemos crear:

buzz@sysadmin:~$ cat /etc/group | grep fuse
buzz@sysadmin:~$

buzz@sysadmin:~$ sudo groupadd fuse
[sudo] password for buzz:
buzz@sysadmin:~$ cat /etc/group | grep fuse
fuse:x:1002:

buzz@sysadmin:~$ sudo adduser buzz fuse
Añadiendo al usuario `buzz' al grupo `fuse' ...
Añadiendo al usuario buzz al grupo fuse
Hecho

buzz@sysadmin:~$ exit

Después de cerrar la sesión, la iniciamos nuevamente e implementamos la “Autenticación SSH con Llave Pública“.

buzz@sysadmin:~$ rm -R .ssh
buzz@sysadmin:~$ ssh-keygen -t rsa -b 4096
buzz@sysadmin:~$ ssh-copy-id buzz@leonardo
buzz@sysadmin:~$ ssh-add
buzz@sysadmin:~$ ssh leonardo
buzz@leonardo:~$ exit
  • Paquetes del lado del cliente:

Obligatoriamente debemos instalar el sshf. Opcionalmente, sobre todo si estamos trabajando sobre un Desktop, recomendamos instalar el paquete ssh-askpass o su equivalente para el ambiente de escritorio específico: ssh-askpass-gnome, ksshaskpass u otro.

buzz@sysadmin:~$ apt show sshfs
buzz@sysadmin:~$ sudo apt install sshfs
  • Montamos un directorio remoto:

Debemos crear el directorio local que se empleará para montar el directorio remoto y después montar la carpeta remota como un sistema de archivos virtual en el espacio del usuario buzz:

buzz@sysadmin:~$ mkdir buzz-leonardo
buzz@sysadmin:~$ ls -l buzz-leonardo/
total 0

buzz@sysadmin:~$ ls -l | grep buzz-leonardo
drwxr-xr-x 2 buzz buzz 4096 ago 30 12:46 buzz-leonardo

buzz@sysadmin:~$ sshfs buzz@leonardo:/home/buzz buzz-leonardo

buzz@sysadmin:~$ ls -l | grep buzz-leonardo
drwxr-xr-x 1 1002 1003 4096 ago 30 12:57 buzz-leonardo

Observemos el cambio del usuario y grupo propietarios de la carpeta local donde montamos el directorio remoto. El SSHFS respeta a los propietarios de la carpeta remota. Si creamos un archivo o carpeta, automáticamente heredará a los propietarios del sistema remoto, lo que es correcto.

buzz@sysadmin:~$ cd buzz-leonardo
buzz@sysadmin:~/buzz-leonardo$ mkdir prueba
buzz@sysadmin:~/buzz-leonardo$ ls -l
total 36
drwxr-xr-x 1 1002 1003 4096 ago 30 12:00 Descargas
drwxr-xr-x 1 1002 1003 4096 ago 30 12:00 Documentos
drwxr-xr-x 1 1002 1003 4096 ago 30 12:00 Escritorio
drwxr-xr-x 1 1002 1003 4096 ago 30 12:00 Imágenes
drwxr-xr-x 1 1002 1003 4096 ago 30 12:00 Música
drwxr-xr-x 1 1002 1003 4096 ago 30 12:00 Plantillas
drwxr-xr-x 1 1002 1003 4096 ago 30 13:05 prueba
drwxr-xr-x 1 1002 1003 4096 ago 30 12:00 Público
drwxr-xr-x 1 1002 1003 4096 ago 30 12:00 Vídeos

En un equipo con ambiente de escritorio, por ejemplo MATE, cuando montemos la carpeta remota se mostrará en la carpeta Escritorio un enlace en forma de dispositivo de almacenamiento -disco duro, memoria- que apunta a la carpeta local donde esta montada la carpeta remota.

  • Desmontamos el directorio remoto:
buzz@sysadmin:~/buzz-leonardo$ cd
buzz@sysadmin:~$ fusermount -u buzz-leonardo
  • Montajes persistentes:

En la documentación del paquete sshfs ubicada en la carpeta /usr/share/doc/sshfs, su autor Miklos Szeredi <miklos@szeredi.hu> ofrece soluciones para los montajes persistentes modificando el archivo /etc/fstab o escribiendo guiones de consola “bash script“, en el archivo /usr/share/doc/sshfs/FAQ.txt.gz.

Nosotros no somos amantes de alterar el archivo /etc/fstab, excepto cuando adicionamos o quitamos discos duros o cuando utilizamos directorios exportados mediante NFSNetwork File System“.

Si estamos trabajando sobre un Escritorio o una Estación de Trabajo, lo mas sencillo sería añadir la línea de comando para montar la carpeta remota a las Aplicaciones al Inicio de cada sesión.

En el caso del Ambiente de Escritorio MATE se puede hacer de la siguiente forma: Menú Sistema –> Preferencias –> Aplicaciones al Inicio –> + Añadir. En el cuadro que se abre a continuación escribir:

  • Nombre: Montar carpeta remota leonardo:/home/buzz
  • Orden: sshfs buzz@leonardo:/home/buzz buzz-leonardo
  • Comentario: Utilizo SSH File System

De ésta forma cada vez que iniciemos sesión en nuestro equipo después de un inicio completo del sistema operativo, se nos pedirá la clave para desbloquear la Llave Pública generada y la confirmación de que se haga o no de forma automática. Mientras mantengamos al equipo en funcionamiento, si cerramos la sesión y después iniciamos una nueva, no se pedirá contraseña alguna y se mantiene el recurso montado.

Sencillo, ¿no?.

Resumen

Miklos Szeredi <miklos@szeredi.hu> autor del programa SSHFS, plantea una serie de ventajas de esta herramienta sobre FTP, SAMBA, etcétera. Es provechoso leer el archivo /usr/share/doc/sshfs/FAQ.txt.gz y que cada lector saque sus propias conclusiones.

Lo cierto es que en el universo UNIX®/Linux existen muchos programas NATIVOS para transferir y compartir archivos, que NO SON soluciones para Linux programadas a partir de software privado de Microsoft®.

Sitio oficial del SSHFS: http://fuse.sourceforge.net/sshfs.html.

Esperamos que este post le sea útil y ¡hasta la próxima entrega!.

Dejar respuesta

Please enter your comment!
Please enter your name here