LinuxParty
A raíz de la propuesta de uno de los lectores del blog, en este post veremos los pasos a seguir para montar un sistema de archivos remoto usando SSHFS.
¿QUÉ ES LO QUE PRETENDEMOS CONSEGUIR?
Lo que pretendemos hacer en este tutorial es acceder y editar archivos de un equipo remoto como si los tuviéramos en nuestro propio ordenador. Por lo tanto el objetivo es trabajar con archivos que no están en nuestro ordenador como si estuviesen físicamente en nuestro ordenador.
El objetivo planteado lo conseguiremos usando SSHFS. Con SSHFS montaremos un volumen adicional en nuestro ordenador que contendrá la información que queramos del equipo remoto. Este volumen adicional que montaremos actuará de la misma forma que si tuviéramos un pendrive o un disco duro adicional conectado en nuestro ordenador.
Nota: Lo que que pretendemos conseguir también lo podríamos conseguir instalando y configurando un servidor NFS. No obstante en este tutorial usaremos SSHFS.
¿QUÉ ES SSHFS?
SSHFS (Secure Shell FileSystem) es la herramienta que nos permite montar sistemas de archivos remotos en nuestro ordenador. Además nos posibilita interactuar con los ficheros remotos usando el protocolo SFTP.
Mediante el protocolo SFTP podremos acceder, transferir y modificar los archivos remotos de forma segura, porque el protocolo SFTP usa SSH para la autenticación y transmisión de datos entre el equipo local y el equipo remoto.
Otros artículos:
- Cómo montar un sistema de archivos o directorio remoto en Linux usando SSHFS sobre SSH
- Cómo montar un sistema de archivos remoto con SSHFS en Linux
- Montar directorios remotos con SSHFS en Ubuntu
- Montar directorios remotos con SSHFS en Linux
USOS QUE PODEMOS DAR AL SISTEMA DE ARCHIVOS REMOTO SSHFS
El uso principal que podemos dar a SSHFS es tener disponibles nuestros datos remotos de forma segura y amigable en todo momento. Por lo tanto usos posibles que le podemos dar son los siguientes:
- Nube personal para almacenar información de forma segura.
- Tener acceso a la información de los ordenadores que forman parte de nuestra red local.
- Poder interactuar y tener información compartida con las máquinas virtuales que tenemos montadas en nuestro ordenador.
- Tener acceso permanente al contenido de un servidor web.
- Compartir una misma carpeta en varios ordenadores distintos.
- Método para realizar copias de seguridad de ficheros y archivos remotos.
- Etc.
REQUISITOS PREVIOS A MONTAR EL SISTEMA DE ARCHIVOS REMOTO CON SSHFS
Antes de proceder a montar el sistema de archivos remotos con SSHFS tenemos que cumplir con los siguientes requisitos:
Equipamiento necesario
Como mínimo precisamos de 2 ordenadores con un sistema sistema operativo GNU-Linux.
El primero de los ordenadores actuará como cliente. En mi caso este equipo tiene instalado el sistema operativo Lubuntu y tiene la IP 192.168.1.12.
El segundo de los equipos actuará como servidor. En mi caso este equipo tiene instalado el sistema operativo Debian y tiene la IP 192.168.1.14.
Nota: Para averiguar la ip interna, tan solo hay que abrir una terminal y ejecutar el comando ifconfig. Para averiguar la IP Publica pueden clicar encima del siguiente enlace.
Nota: También es posible implementar este tipo de solución en Mac OS y en Windows, pero obviamente el procedimiento es diferente.
Instalar los paquetes necesarios
Los 2 ordenadores que usaremos tienen que tener instalados los paquetes openssh-server y openssh-client. Para instalar estos paquetes hay que abrir una terminal y ejecutar el siguiente comando tanto en el servidor como en el cliente:
sudo apt-get install openssh-server openssh-client
En el ordenador que actúa como cliente tenemos que asegurarnos que los paquetes paquetes sshfs y fuse están instalados. Para ello ejecutamos el siguiente comando en la terminal:
sudo apt-get install sshfs fuse
Activar el módulo Fuse en ordenador que actúa como cliente
Para que el sistema de archivos remoto se pueda montar hay que hacer uso de un módulo del Kernel conocido como FUSE. Para ver si este módulo está activado tenemos que teclear el siguiente comando en la terminal:
lsmod | grep fuse
Si el comando nos da un resultado del tipo “fuse 86016 3” podemos tener la seguridad que el módulo FUSE está activado y podemos pasar al siguiente apartado.
Si por lo contrario el comando no devuelve ningún resultado pueden pasar 2 cosas. La primera es que el módulo esté desactivado. La segunda es que el módulo FUSE se haya compilado directamente en el Kernel y por lo tanto no haga falta cargar ningún módulo.
Para comprobar si el módulo FUSE se ha compilado directamente en el Kernel ejecutamos el siguiente comando en la terminal:
grep -i fuse /lib/modules/$(uname -r)/modules.builtin
Si el comando nos devuelve un resultado similar del tipo “kernel/fs/fuse/fuse.ko” podemos tener la seguridad que FUSE está activo y por lo tanto podemos pasar al siguiente apartado.
Finalmente en el caso que el comando no devuelva ningún resultado significará que el módulo no está cargado en el kernel. Para cargarlo tan solo hay que ejecutar el siguiente comando en la terminal:
modprobe fuse
Asegurar que nuestro usuario forme parte del grupo FUSE
Una vez activado el módulo Fuse, en el ordenador que actúa como cliente tenemos que comprobar que nuestro usuario forme parte del grupo fuse. Para ello instalamos el paquete members ejecutando el siguiente comando en la terminal:
sudo apt-get install members
Justo después de instalar el paquete ejecutamos el siguiente comando en la terminal:
members fuse
Si la salida del comando no muestra el nombre de nuestro usuario, que en mi caso es joan, entonces es que nuestro usuario no pertenece al grupo fuse. Si es este el caso, para que nuestro usuario pertenezca al grupo fuse hay que ejecutar el siguiente comando en la terminal:
sudo gpasswd -a joan fuse
Una vez ejecutado el comando el usuario joan se habrá añadido dentro del grupo fuse. Si queremos lo podemos comprobar ejecutando de nuevo el siguiente comando en la terminal:
members fuse
Nota: Una vez hecha la comprobación se puede desinstalar el paquete members.
Crear la carpeta donde se montará el sistema de archivos SSHFS
Seguidamente en el ordenador que actúa como cliente crearemos la carpeta en la que montaremos el sistema de archivos remoto SSHFS. Para ello ejecutamos el siguiente comando en la terminal:
mkdir /home/joan/desktop
Por lo tanto en mi caso montaré el sistema de archivos remotos en una carpeta llamada desktop que está ubicada en mi partición home.
Una vez realizados los pasos previos ya podemos pasar a la acción montando el sistema de archivos remoto en nuestro ordenador.
MONTAR EL SISTEMA DE ARCHIVOS REMOTO SSHFS MANUALMENTE
Primeramente montaremos el sistema de archivos de forma manual para comprobar si todo está funcionando correctamente. Para ello en el ordenador que actuará como cliente ejecutaremos el siguiente comando el la terminal:
sshfs Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.:/home/joan /home/joan/desktop
El significado de cada uno de los parámetros que aparecen en el comando es el siguiente:
sshfs : Es el comando que tenemos que ejecutar para montar sistema de archivos SSHFS.
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. : Es la dirección ip servidor. El usuario del servidor es joan y la ip del servidor es 192.168.1.14. Como podréis observar la ip del servidor es la interna. En caso de tener necesidad de acceder al servidor de archivos fuera de la red local, deberemos sustituir la ip interna por la ip pública o por un dominio de redireccionamiento DNS.
:/home/joan : Es la dirección de la carpeta que queremos montar en nuestro equipo cliente. Por lo tanto una vez montado el sistema de archivos en nuestro equipo cliente, tendremos acceso al contenido del servidor ubicado en la partición home (/home/joan)
/home/joan/desktop : Es la ruta del cliente en la que queremos montar el sistema de archivos remoto SSHFS.
Después de ejecutar el comando tan solo hay que abrir el gestor de archivos y comprobar que aparezca un nuevo volumen llamado desktop. Tal y como se puede ver en la captura de pantalla, si clicamos encima del volumen desktop tendremos acceso a la totalidad de contenido de la partición home del equipo remoto que actúa como servidor.
Nota: Obviamente los comandos de este apartado hay que adaptarlos en función de las características de vuestra red.
Desmontar el volumen
Si queremos desmontar el volumen que acabamos de montar, tan solo tenemos que abrir la terminal y ejecutar el siguiente comando:
fusermount -u /home/joan/desktop
Después de ejecutar el comando, el volumen SSHFS se desmontará y dejaremos de tener acceso a los ficheros del equipo remoto.
MONTAR EL SISTEMA DE ARCHIVOS REMOTO SSHFS AUTOMÁTICAMENTE
Acabamos de comprobar que el sistema de archivos SSHFS se puede montar de forma manual sin ningún tipo de problema. Por lo tanto ahora ya podemos automatizar el proceso de montaje de la siguiente forma:
Crear un par de claves asimétricas
Vamos a generar un par de claves asimétricas para poder montar nuestro sistema de archivos remoto SSHFS sin necesidad de introducir ninguna contraseña.
Para ello en el ordenador que actuará como cliente, tenemos que abrir una terminal y teclear el siguiente comando:
ssh-keygen -b 4096 -t rsa -C "$(whoami)@$(hostname)-$(date -I)"
El significado de cada unos de los parámetros del comando es el siguientes:
ssh-keygen : Es el comando que genera el par de claves.
-b 4096 : Estamos indicando que la clave asimétrica que se generará tenga un tamaño de 4096 bits. Otros tamaños que podemos elegir por ejemplo son 1024 o 2048.
-t rsa : Indica que el algoritmo usado para generar el par de claves tiene que ser el rsa. Otros algoritmos que podemos usar son el dsa, ecdsa, rsa1 y ed25519.
-C «$(whoami)@$(hostname)-$(date -I)»: Esta parte del comando es simplemente para insertar un comentario identificativo en nuestra clave. Quien lea el contenido de nuestra clave verá que la clave fue creado por el usuario joan, cono el equipo Lubuntu el día 25-08-2015.
Justo después de ejecutar el comando, se nos preguntará la ubicación donde queremos guardar las claves y el nombre que les queremos poner. Cuando nos haga esta pregunta presionaremos la tecla Enter. De este modo las claves que generaremos se guardarán en la ubicación estándar que es la /home/usuario/.ssh/, y tendrán el nombre estándar que es id_rsa.
Seguidamente se nos preguntará si queremos introducir una contraseña para cifrar nuestra clave privada. Como queremos conectarnos al servidor sin necesidad de introducir ninguna contraseña, presionamos la tecla Enter sin introducir ninguna contraseña.
Finalmente se nos pregunta que volvamos a introducir la contraseña que acabamos de introducir. Como anteriormente no introducimos ninguna contraseña volvemos a presionar la tecla Enter.
Nota: Al no introducir un password, la clave privada se guarda en nuestro disco duro sin cifrar. Esto es un riesgo de seguridad que correremos. Si alguien robase nuestro ordenador podría acceder sin problemas al contenido remoto de nuestro servidor. Para protegernos de este peligro podemos cifrar el disco duro de nuestro ordenador o poner una contraseña a nuestra clave y usar ssh-agent.
Después de realizar estos pasos se crearan las claves asimétricas en la ubicación ~/.ssh. En la siguiente captura de pantalla se puede ver un resumen de todos los pasos realizados.
Crear el fichero donde se guardaran las claves públicas autorizadas (acción en el servidor)
En el ordenador que actúa como servidor de ficheros vamos a crear un archivo donde se van a guardar las claves públicas que nuestro servidor aceptará. Para ello ejecutamos el siguiente comando en la terminal:
touch ~/.ssh/authorized_keys
Una vez tecleado el comando se creará el archivo authorized_keys en la ubicación ~/.ssh.
Copiar la clave pública del cliente al servidor
En el ordenador que actuará como cliente abrimos una terminal. Una vez abierta la terminal exportaremos la clave pública al servidor ejecutando el siguiente comando:
scp ~/.ssh/id_rsa.pub Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.:~/.ssh
El significado de cada unos de los parámetros del comando es el siguiente:
scp : Es el comando que sirve para copiar archivos de forma cifrada entre un sistema local y un servidor remoto.
~/.ssh/id_rsa.pub : Es la ruta de la clave pública que queremos exportar al servidor.
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.:~/.ssh : Es la dirección del servidor donde queremos copiar la clave pública. El usuario del servidor es joan, la ip del servidor es 192.168.1.14 y queremos que la clave pública se guarde en la ubicación home/.ssh. En el caso que el servidor remoto al que queremos copiar la clave esté fuera de nuestra red local, deberemos reemplazar la ip 192.168.1.14 por la ip pública del servidor o por un dominio de redireccionamiento DNS
Nota: Obviamente los comandos de este apartado hay que adaptarlos en función de las características de vuestra red.
Una vez se haya ejecutado el comando se nos preguntará la contraseña del servidor SSH al que queremos copiar la clave pública. Introducimos la contraseña y justo después de introducirla, la clave pública del cliente se copiara la ubicación home ~/.ssh del servidor SSH. Seguidamente se muestra una captura de pantalla de los pasos realizados en este apartado:
Autorizar la clave pública del cliente en el servidor (acción en el servidor)
Una vez tenemos la clave pública del cliente en el servidor tan solo nos queda introducir la clave pública del cliente a la lista de claves autorizadas del servidor authorized_keys. Para ello ejecutamos el siguiente comando en la terminal del servidor:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
El significado de cada unos de los parámetros del comando es el siguiente:
cat : Comando que usamos para añadir la clave pública dentro del fichero authorized_keys.
~/.ssh/id_rsa.pub : Es la ruta y el nombre de la clave pública que queremos autorizar.
>> ~/.ssh/authorized_keys : Es la ruta del archivo que almacenará las claves públicas autorizadas. La parte del comando >> es importante ya que es la parte posibilita que se añada la clave pública al fichero authorized_keys.
Una vez ejecutado el comando la clave pública se copiará en el fichero de claves autorizadas. Para comprobar que es que así podemos ejecutar el siguiente comando:
cat ~/.ssh/authorized_keys
Si después de ejecutar el comando nos aparece una clave en pantalla el proceso ha sido un éxito. Ahora ya podemos montar nuestro sistema de archivos remoto SSHFS sin necesidad de introducir ninguna contraseña. En la siguiente captura de pantalla se muestran los pasos que se han seguido para autorizar la clave pública:
Configurar fstab para que el sistema de archivos remoto SSHFS se monte de forma automática
Si queremos que nuestro sistema de archivos remoto SSHFS se monte de forma automática al arrancar nuestro ordenador tenemos que configurar debidamente el archivo fstab. Para ello ejecutamos el siguiente comando en la terminal del ordenador que actuará como cliente:
sudo nano /etc/fstab
Una vez abierto el fichero fstab, tenemos que introducir la siguiente línea al final del archivo:
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.:/home/joan /home/joan/desktop fuse.sshfs defaults,idmap=user,_netdev,users,IdentityFile=/home/joan/.ssh/id_rsa,allow_other,reconnect 0 0
La línea que acabamos de introducir para montar el sistema de archivos me ha funcionado tanto
en distros que usan systemd como en distros que usan SysVinit. En el caso que este comando os
de problemas y estéis usando una distro que use Systemd, deberéis reemplazar la linea anterior
por la siguiente:Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.:/home/joan /home/joan/desktop fuse.sshfs noauto,x-systemd.automount,_netdev,users,idmap=user,IdentityFile=/home/joan/.ssh/id_rsa,allow_other,reconnect 0 0
El significado de cada uno de los parámetros introducido en el comando son los siguientes:
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. : Es la dirección del servidor donde está ubicado el sistema de archivos que queremos montar en nuestro equipo. El usuario del servidor es joan, la ip del servidor es 192.168.1.14. Como podréis observar la ip del servidor es la ip interna. En caso de tener necesidad de acceder al servidor de archivos fuera de nuestra red local, deberemos sustituir la ip interna por la ip pública o por un dominio de redireccionamiento DNS.
/home/joan : Es la ruta del servidor que queremos montar en el cliente.
/home/joan/desktop : Es la ruta del cliente donde queremos montar el sistema de archivos remoto SSHFS.
fuse.sshfs : Estamos indicando el tipo de sistema de archivos que queremos montar.
defaults : Esta parte asigna las opciones de montaje estándar al sistema de archivos sshfs que vamos a montar. Las opciones por defecto son rw, suid, dev, exec, auto, nouser, y async.
idmap=user: Está opción hace que el propietario de los ficheros remotos sea nuestro usuario. Si no usamos esta opción es posible que nuestro ordenador piense que el propietario de los archivos remotos sea otro.
_netdev : Con este comando indicamos que para montar el sistema de archivos se requiere una interfaz de red levantada.
users : Para permitir que la totalidad de usuarios puedan montar y desmontar el sistema de archivos remotos SSHFS.
IdentityFile=/home/joan/.ssh/id_rsa : Se indica la ruta de la clave privada. De esta forma podremos montar el sistema de archivos sin usar contraseña.
allow_other : Para dar acceso a otros usuarios diferentes al usuario root a la carpeta que vamos a montar.
reconnect : En el caso que el sistema de archivos se caiga por cualquier motivo, se reconectará de forma automática sin tener que hacer nada.
0 0 : Introduciendo el primer cero estamos diciendo que no queremos respaldar el sistema de archivos SSHFS que vamos a montar. Introduciendo el segundo cero lo que hacemos es indicar que no queremos que la utilidad fsck compruebe el sistema de ficheros.
Una vez realizadas las modificaciones guardamos los cambios y cerramos el fichero.
Nota: Si alguno de los parámetros en el fichero fstab es introducido de forma errónea es posible que el ordenador no arranque. Por lo tanto recomiendo tener un LiveUSB a mano y realizar una copia de seguridad del archivo /etc/fstab para poder actuar de forma fácil en caso de tener problemas.
Modificar la configuración de fuse
En el apartado anterior habréis observado que una de las opciones de montaje es allow_other. Para que esta opción sea válida tenemos que modificar la configuración de fuse. Para ello abrimos una terminal y tecleamos el siguiente comando:
sudo nano /etc/fuse.conf
Una vez se abra el editor de textos nano con la configuración de fuse, tenemos que localizar la siguiente línea:
#user_allow_other
Una vez localizada la descomentamos de forma que quede de la siguiente forma:
user_allow_other
Una vez realizadas las modificaciones guardamos los cambios y cerramos el fichero.
Comprobación de los pasos realizados
A estas alturas el proceso ha finalizado. Para comprobar que las configuraciones aplicadas funcionan de forma correcta abrimos una terminal y ejecutamos el siguiente comando:
mount ~/desktop
El significado del comando que acabamos de ejecutar es el siguiente:
mount: Comando para indicar que se monte el sistema de ficheros.
~/desktop: La ubicación donde se tiene que montar el sistema de ficheros.
Si el sistema de archivos remoto se monta sin problemas entonces la configuración y todos los pasos realizados hasta el momento son correctos. En caso de tener problemas habrá que volver a repasar todos los pasos que se han realizado.
Montar el sistema de archivos SSHFS en el arranque del sistema
En estos momentos ya estamos en condiciones de reiniciar el ordenador. Al reiniciar el ordenador el sistema de archivos remoto SSHFS se montará de forma automática. Una vez arrancado el ordenador, tal y como se puede ver en la captura de pantalla, tan solo tenemos que abrir el gestor de archivos y veremos que existirá un volumen nuevo llamado desktop que contiene los ficheros de nuestro equipo remoto.
Ahora tan solo tenemos clicar encima del volumen desktop, y tal como se puede ver en la captura de pantalla, podremos navegar y hacer absolutamente lo que queramos en el sistema de archivos remoto.
Desmontar el sistema de archivos SSHFS
Sí queremos desmontar el sistema de archivos ahora tenemos 2 opciones. Podemos desmontarlo vía terminal, tal y como hicimos en el caso anterior, o podemos hacerlo mediante el explorador de archivos.
Si lo queremos hacer con el explorador de archivos, tal y como se puede ver en la captura de pantalla, seleccionamos el volumen que acabamos de montar, presionamos el botón derecho del ratón y finalmente clicamos encima de la opción Desmontar Volumen.
-
Hardware
- Cómo Imprimir desde la Línea de Comandos en Linux y Solucionar Problemas con Impresoras en Red
- Los 5 mejores comandos de Linux para solucionar problemas (y cómo los uso)
- 5 comandos de Linux para encontrar rápidamente la información de tu Sistema Operativo
- El controlador de gráficos NVIDIA 560 Linux adoptará completamente módulos de kernel de GPU de código abierto
- El 84% de los usuarios de PC no están dispuestos a pagar más por un hardware con soporte para IA, según una encuesta
- ¿PC con Linux o Windows 11 Copilot+? TUXEDO presenta el portátil Snapdragon X Elite ARM
- La startup finlandesa 'Flow' afirma que puede multiplicar por 100 la potencia de cualquier CPU con su chip complementario
- China lanza el buque portacontenedores eléctrico más grande del mundo
- Testar el rendimiento de discos duros en Linux
- ¿Por qué los portátiles están soldando sus RAM a la placa?
- TUXEDO Sirius 16 Gen2, el portátil de juegos Linux completamente AMD, recibe un CPU Ryzen 7 más rápido
- Clonezilla Live ahora está parcheado contra la puerta trasera XZ, con tecnología Linux 6.7
- La computadora de escritorio LXQt 2.0 se lanza en abril con un nuevo menú de aplicaciones y portado a Qt 6
- Lanzamiento del controlador de gráficos NVIDIA 550.54.14 para Linux con muchas mejoras
- El firmware BIOS/UEFI de código abierto Libreboot agrega más soporte de hardware