06 may 2022
¿Cómo montar un sistema de archivos o carpeta remota usando SSHFS sobre SSH en Ubuntu?
¡Trabajadores!
La fuerza no depende del número exclusivamente. La unión es la que hace la fuerza. Este adagio se ha repetido una y otra vez en la historia, desde Leónidas hasta nuestros días. Sabemos que entre los hombres, la argamasa no es otra que la cohesión. Hemos de hermanarnos frente a un objetivo común, una misión de la que colectiva e individualmente saldremos beneficiados.
Nuestro causal de unión no es otro que el lema bajo el que se fundó nuestra República y su software: la Libertad.
Ahora bien, un sistema informático no tiene que permanecer gregario; bien puede unirse a otros para conformar una herramienta de mayor valía y servir - a su vez - nuestros designios bajo un porvenir luminoso. GNU con Linux hace constar esta máxima avalando la posibilidad de ejecutar programas servidores de múltiples funcionalidades, que permitan a otros sistemas clientes - ajenos o propios - interconectarse y compartir sus recursos. Esto puede realizarse de una manera rápida y poco segura, pero normalmente recomendaré el empleo del estándar Secure Shell (SSH), pues consta de encriptación punto a punto y se hace de difícil vulneración, logrando una mayor seguridad para nuestro sistema y el ajeno.
Normalmente esta acción de hermanado suele ser temporal, pero existirán ocasiones donde querremos que las mismas se solidifiquen y se hagan permanentes en pos de un uso constante.
Cada computadora a la que queramos conectarnos a través del protocolo Secure Shell debe contar con el servidor SSH, software libre altamente útil. Ubuntu Server ya contará con dicha facilidad incorporada por defecto, pero en el caso de las versiones de escritorio (Ubuntu Desktop) habremos de instalarlo específicamente, si es que no lo hemos hecho ya. Para ello, en tales equipos abrimos una terminal presionando Ctrl+Alt+T e ingresamos:
sudo apt install openssh-server
Si usamos un cliente de escritorio gráfico, ya podríamos montar discos o directorios en red, de forma temporal o permanente. Simplemente debemos ir al panel superior y hacer clic en Lugares / Conectar con servidor... Al hacerlo aparecerá la ventana Conectar con el Servidor.
Esta nos permitirá una variedad de esquemas de trabajo completando los datos requeridos... podremos asociarnos a servidores FTP Públicos o con contraseña, compartido de Windows, protocolo Filing de Appe, WebDAV común y seguro. En este caso como empleamos Linux nos conectaremos a través del protocolo SSH (Secure Shell) a otro sistema remoto, que oficiará de servidor.
Normalmente en el campo Servidor debemos ingresar la dirección IP o nombre de red (host) del equipo remoto, y en el campo Carpeta normalmente querremos indicar la carpeta de usuario en el servidor remoto (/home/usuario). Finalmente el nombre de usuario y la contraseña del usuario (que normalmente corresponden al usuario de la carpeta).
Opcionalmente, si deseamos hacer de este vínculo uno permanente, podríamos tildar "recordar contraseña" y agregar la carpeta remota a los Marcadores, con lo cual tendremos siempre el disco de red a mano. Para desmontar el servidor desde nuestro administrador gráfico, debemos presionar el botón de desmontaje ("Eject") o hacer clic con el botón derecho del ratón sobre el ícono de la carpeta montada y elegir la opción Desmontar.
Ahora bien, en el caso del uso de la terminal, querremos montar desde allí al disco remoto y operarlo localmente. Esto será útil para administradores de sistema que quieran montar sistemas de archivo usando cliente SSHFS sobre SSH, y puedan responder a cualquier propósito de trabajo. Por ejemplo, tener una red LAN con un servidor de discos NAS, o contar con un disco de gran capacidad en un equipo remoto y hacer uso de sus archivos desde un equipo portátil. En fin, cualquier trabajo que implique "carpetas en red".
Para ello en nuestra terminal emplearemos dicho cliente, que normalmente no está incluido entre los paquetes por defecto. Abrimos una terminal con Ctrl+Alt+T e ingresamos:
sudo apt install sshfs
Una vez instalado el paquete SSHFS, necesitamos crear un directorio que oficiará de punto de montaje para el sistema de archivos remoto. Conviene hacerlo dentro de la carpeta de sistema /mnt, lo cual recomiendo hacer. En este ejemplo el punto de montaje local estará localizado en /mnt/discoevita.
sudo mkdir /mnt/discoevita
Una vez creado el directorio que nos servirá como punto de montaje local, ejecutamos el siguiente comando como Conductor del sistema, que montará la carpeta remota /home/evita dentro de la carpeta /mnt/discoevita de nuestro sistema de archivos local (no olviden reemplazar 192.168.0.102 con la dirección IP o nombre de red del punto de montaje):
sudo sshfs -o allow_other evita@192.168.0.102:/home/evita/ /mnt/discoevita
...Ahora bien, si el servidor remoto está configurado para hacer uso de autorización basada en llaves SSH, debemos entonces especificarle la ruta hacia nuestras llaves públicas con el siguiente comando:
sudo sshfs -o allow_other,IdentityFile=~/.ssh/id_rsa evita@192.168.0.102:/home/evita/ /mnt/discoevita
Si hemos ejecutado el comando anterior que nos corresponda exitosamente y sin errores, entonces deberíamos poder tener acceso al listado de los archivos remotos, espejados dentro del punto de montaje local /mnt/discoevita. Podremos comprobarlo con los comandos de organización:
cd /mnt/discoevita ls
También podríamos revisar que el sistema de archivos remoto aparezca en la tabla de nuestro propio sistema de archivos. Para ello ejecutaremos el comando:
df -hT
...y nuestra terminal debería devolvernos un resumen de los componentes de su sistema de archivo, que debe incluir la carpeta remota, de una forma similar al siguiente:
S.ficheros Tipo Tamaño Usados Disp Uso% Montado en udev devtmpfs 1,9G 0 1,9G 0% /dev tmpfs tmpfs 388M 6,4M 382M 2% /run /dev/sda1 ext4 233G 144G 78G 65% / tmpfs tmpfs 2,0G 32M 2,0G 2% /dev/shm tmpfs tmpfs 5,3M 4,1k 5,3M 1% /run/lock tmpfs tmpfs 2,0G 0 2,0G 0% /sys/fs/cgroup tmpfs tmpfs 388M 62k 388M 1% /run/user/1000 evita@192.168.0.102:/home/evita fuse.sshfs 324G 55G 253G 18% /mnt/discoevita
Con esto sería suficiente para un trabajo temporal, hasta que el servidor o el cliente se reinicien.
Si deseamos montar el sistema de archivos de forma permanente, para que toda vez que encendamos el sistema se realice el montaje automáticamente, debemos editar editar el archivo de configuración del sistema de archivos, el cual es /etc/fstab. Para ello emplearemos el editor de texto GNU Nano, ingresando el siguiente comando:
sudo nano /etc/fstab
...se abrirá el editor y cargará el fichero de configuración, que ya debería contener información. No debemos modificar nada de lo que ya existe. Debemos ir al final del archivo y agregarle una línea similar a la siguiente:
sshfs#usuario@192.168.0.102:/home/evita/ /mnt/discoevita fuse.sshfs defaults 0 0
...y grabamos el archivo (ctrl+o) y salimos del editor (ctrl+x).
Debemos asegurarnos de que hemos configurado el Alta sin Contraseña entre servidores para automontar el sistema de archivos durante los reinicio del sistema (de lo contrario, siempre al iniciar el sistema nos solicitará la contraseña del usuario remoto SSH previo al automontaje de su carpeta).
En cambio, si el servidor estuviese configurado con una autorización basada en llave SSH, entonces debemos agregar al archivo /etc/fstab la siguiente línea:
sshfs#usuario@192.168.0.102:/home/evita/ /mnt/discoevita fuse.sshfs IdentityFile=~/.ssh/id_rsa defaults 0 0
A continuación necesitaremos actualizar la tabla de sistemas de archivos para hacer efectivos los cambios realizados. Ello lo haremos efectivo con:
sudo mount -a
...entonces se automontará el disco a través de SSH toda vez que encendamos el sistema.
Para desmontar el sistema de archivos remoto desde la terminal ingresamos el siguiente Comando de Organización:
umount /mnt/discoevita