Mi Blog

No te olvides seguirme en Facebook.

Tan solo tienes que hacer click en Me Gusta

 

 

x

⋆ Cómo montar un sistema de ficheros remoto con SSHFS

⋆ Cómo montar un sistema de ficheros remoto con SSHFS

(Tiempo estimado: 8 - 16 minutos)

En ocasiones necesitaremos montar un sistema remoto a través de Samba, NFS... pero no tenemos acceso para montar o configurar el equipo remoto. Con SSHFS, podremos montar gracias a FUSE el sistema remoto como un disco local en nuestro equipo.

Seguid leyendo y os enseñaré a montar un sistema de ficheros remoto a través de SSHFS...

 

 

¿QUÉ ES SSHFS Y FUSE?

Secure SHell FileSystem (SSHFS) es un sistema de archivos para Linux (y otros sistemas operativos con una implementación FUSE, tal como en Mac OS X), que opera sobre archivos en una computadora remota usando un entorno seguro de acceso. En la computadora local donde se monta SSHFS, la implementación hace uso del módulo del kernel FUSE. Los efectos prácticos de esto es que el usuario final puede interactuar amigablemente con archivos remotos estando en un servidor SSH, viéndolos como si estuvieran en su computadora local. En la computadora remota se utiliza el subsistema SFTP de SSH.

FUSE ó sistema de archivos en el espacio de usuario (Filesystem in Userspace) es un módulo cargable de núcleo para sistemas operativos de computador tipo Unix, que permite a usuarios no privilegiados crear sus propios sistema de archivos sin necesidad de editar el código del núcleo. Esto se logra mediante la ejecución del código del sistema de archivos en el espacio de usuario, mientras que el módulo FUSE solo proporciona un "puente" a la interfaz del núcleo real. FUSE fue oficialmente fusionado con la corriente principal del kernel Linux en la versión 2.6.14.

FUSE es útil para la creación de sistemas de archivos virtuales. A diferencia de los tradicionales sistemas de archivos, que, en esencia, guardan y recuperan los datos desde un disco, los sistemas de archivos virtuales en realidad no almacenan datos propios. Actúan como una visualización o traducción de un sistema de archivos existente o dispositivo de almacenamiento.

 

 

Los datos a través de SSHFS van cifrados

 

 

1.- ELEMENTOS NECESARIOS PARA ESTE TUTORIAL

  • Un PC con GNU/Linux (cualquiera, preferiblemente Debian/Ubuntu)
  • Un PC cliente con Windows 10 (preferiblemente)
  • Conexión a Internet

 

 

2.- MONTAR SISTEMAS REMOTOS GNU/LINUX DESDE WINDOWS

Para conseguir montar/mapear un sistema remoto GNU/Linux en un equipo con Windows, hay que instalar una serie de paquetes necesarios: winfsp y sshfs-win. También es recomendable sshfs-win-manager para gestionar las conexiones, ya que Windows a veces falla a la hora de montar y crearlas unidades. Mi recomendación es instalar los 3 programas.

 

Instalación de winfsp:

Para instalar winsfp, descargaremos el paquete de la web oficial de GitHub https://github.com/billziss-gh/winfsp. En este ejemplo el paquete a instalar será: winfsp-1.8.20304.msi. Una vez descargado el paquete, lo ejecutaremos con "doble click" como cualquier otro instalador en Windows.

SSHFSInstalar Winsfp

 

 

En la siguiente pantalla seleccionaremos las opciones que queremos instalar. Por defecto, instalaremos solamente el Core excepto que necesitemos alguno de los otros componentes:

SSHFSComponentes a Instalar

 

 

En el siguiente paso, deberemos hacer click en "Install" para comenzar la instalación de WinFsp:

SSHFSÚltimo paso para instalar WinSfp

 

 

Una vez terminada la instalación, veremos un mensaje como el siguiente y cerraremos la instalación haciendo click en "Finish":

SSHFSInstalación finalizada

 

 

Instalación de SSHFS-Win:

Para instalar SSHFS-Win, descargaremos el paquete de su web oficial de GitHub https://github.com/billziss-gh/sshfs-win. Una vez descargado, lo ejecutaremos con "doble click" como cualquier otro instalador de Windows. En este ejemplo, el paquete instalado ha sido sshfs-win-3.5.20357-x64.msi.

SSHFSInstalación de SSHFS-Win:

 

 

En el siguiente paso seleccionaremos las preferencias de la instalación o paquetes a instalar. Por defecto lo dejaremos como está y continuaremos la instalación:

SSHFSCaracterísticas de SSHFS-Win

 

 

La pantalla siguiente nos pregunta si realmente queremos hacer la instalación. Haremos click en "Install" para instalar SSHFS-Win:

SSHFSInstalar SSHFS-Win

 

 

Una vez finalizada la instalación, veremos una pantalla como la siguiente:

SSHFSSSHFS-Win instalado correctamente

 

 

Instalación de SSHFS-Win-Manager:

Mi recomendación para montar el sistema remoto es utilizar SSHFS-Win-Manager https://github.com/evsar3/sshfs-win-manager ya que permite tener y montar desde una interfaz gráfica muchos sistemas remotos. Lo descargaremos de su web oficial y lo instalaremos con "doble click". En este ejemplo la versión que se instala es sshfs-win-manager-setup-v1.2.1.

Para añadir una conexión nueva haremos click en "Add Connection":

SSHFSAñadir conexión

 

 

A continuación, introduciremos los datos de la conexión. En este ejemplo los datos serán:

  • Nombre de la conexión: DEBIAN RAUL $HOME
  • IP/Host: 192.168.1.47
  • Port: 22
  • User: raul
  • Authenticacion Method: Password
  • Password: ********
  • Remote: /home/raul
  • Local: E:

 

Una vez introducidos los datos, pulsaremos "Save":

SSHFSDatos de la conexión

 

 

Ahora, en el listado de conexiones, podremos conectar el sistema de ficheros remoto haciendo click en el icono de conexión a la derecha:

SSHFSConectar sistema remoto

 

 

Una vez conectado y montado el sistema de ficheros remoto, podremos acceder desde el explorador de ficheros de Windows o desde el icono de la carpeta en azul:

SSHFSAcceder al contenido remoto

 

 

En la siguiente imagen se ve como la unidad remota está montada como un disco duro y con la letra de la unidad E:

SSHFSSistema remoto desde Explorador de ficheros

 

 

También podemos montar la unidad desde terminal, aunque a mi personalmente me ha dado algunos problemas (unas veces funciona, otras no...) ó desde "Mapear Unidad de Red". A continuación os pongo como se hace de las 2 formas pero sigo recomendando usar SHFS-WIN Manager.

Para montar toda la unidad /, sin especificar /home/raul como en los ejemplos anteriores ejecutaremos lo siguiente:

C:\Users\raul>net use E: \\sshfs\Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
The password is invalid for E: \\sshfs\Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo..

Enter the user name for 'sshfs': raul
Enter the password for sshfs:
The command completed successfully.

 

 

Una vez completado el comando, podremos ver como una unidad de disco (no de red) la nueva unidad:

SSHFSSistema remoto montado con SSHFS

 

 

Para hacerlo de forma gráfica haremos click con el botón derecho sobre "Mi PC" y seleccionaremos "Map network drive":

SSHFSMontar sistema remoto de forma gráfica

 

 

En la siguiente pantalla introduciremos de la siguiente forma la letra de la unidad que queremos asignar y el equipo remoto como se muestra a continuación y pulsaremos "Finish":

SSHFSMontar sistema remoto gráficamente

 

 

En la siguiente pantalla introduciremos el usuario y la contraseña de acceso:

SSHFSUsuario y contraseña

 

 

En la siguiente imagen se ve como el sistema remoto está montado como un disco duro local:

SSHFSSistema remoto montado con SSHFS

3.- MONTAR SISTEMAS REMOTOS GNU/LINUX DESDE OTRO GNU/LINUX

Para montar un sistema de ficheros remoto a través de SSH nen un cliente GNU/Linux, lo primero que debemos hacer es instalar el paquete sshfs en el equipo cliente. Para ello, si tenemos una distribución de tipo Debian/Ubuntu asada en paquetes *.deb, ejecutaremos el siguiente comando:

raul@debian:~$ sudo apt-get install sshfs

 

 

Si estamos usando una versión de tipo RedHat/CentOS con paquetes rpm, ejecutaremos:

raul@rhel:~$ sudo yum install sshfs

 

 

Una vez instalado el paquete sshfs, crearemos un directorio en el cual vamos a montar el sistema de ficheros remoto. En este ejemplo, vamos a acceder a una máquina remota con el usuario juan, por tanto, crearemos un directorio en el $HOME de nuestro usuario con un nombre identificativo, en este ejemplo juan_remote:

raul@debian:~$ mkdir juan_remote

 

 

Para montar al directorio remoto en el directorio local, ejecutaremos sshfs con la siguiente sintaxis:

raul@debian:~$ sshfs [usuario]@[equipo_remoto]:[directorio_remoto] [directorio_local]

 

 

En nuestro ejemplo, para montar el directorio remoto /home/juan el equipo remoto 192.168.1.47 con el usuario juan en el directorio local $HOME/juan_remote/ , ejecutaremos el siguiente comando:

raul@debian:~$ sshfs Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.:/home/juan juan_remote
The authenticity of host '192.168.1.47 (192.168.1.47)' can't be established.
ECDSA key fingerprint is SHA256:GkfgiMrh2sfhdMxG0hvYJTr+yWlxjt5XB2fiELL3YDI.
Are you sure you want to continue connecting (yes/no)? yes
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.'s password:

 

 

Para comprobar que el directorio ha sido correctamente montado, ejecutaremos el comando "df" para ver el recurso montado. En nuestro ejemplo sale correctamente montado y para acceder a su contenido, tan solo deberemos acceder a $HOME/raul/juan_remote:

raul@debian:~$ df -h
S.ficheros Tamaño Usados Disp Uso% Montado en
udev 475M 0 475M 0% /dev
tmpfs 99M 5,7M 94M 6% /run
/dev/sda1 6,9G 5,6G 927M 87% /
tmpfs 494M 8,0K 494M 1% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 494M 0 494M 0% /sys/fs/cgroup
tmpfs 99M 4,0K 99M 1% /run/user/109
tmpfs 99M 0 99M 0% /run/user/1000
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.:/home/juan 6,9G 5,6G 927M 87% /home/raul/juan_remote
tmpfs 99M 0 99M 0% /run/user/1003

 

 

4.- SSHFS vs NFS

Aunque en un entorno empresarial es más recomendable el uso de NFS, SSHFS puede ser útil en entorno doméstico ya que nos ahorra tiepmo de configuración de SAMBA o NFS. A continuación se describe el rendimiento de SSHFS, NFS y otros sistemas de ficheros:

Rendimiento secuencial:

Lectura: 

SSHFSLectura secuencial (Jake's Blog)

 

 

Escritura: 

SSHFSEscritura secuencial (Jake's Blog)

 

 

Rendimiento aleatorio:

Lectura: 

SSHFSLectura aleatoria (Jake's Blog)

 

 

Escritura: 

SSHFSEscritura aleatoria (Jake's Blog)

 

 

Mundo Real:

Una prueba en el mundo real de un Rsync de 1,7GB de datos con 2929 ficheros:

SSHFSLectura Rsync (Jake's Blog)

 

 

SSHFSEscritura Rsync (Jake's Blog)

 

 

Las imágenes y los resultados han sido generados por: Jake's Blog tras concederme autorización para usarlos en mi Blog.

 

ENJOY!


Raúl Prieto Fernández

Sitio Web: raulprietofernandez.net

Si quieres ir rápido, ve solo. Si quieres llegar lejos, ve acompañado.

Escribir un comentario

Código de seguridad
Refescar