Cómo instalar y usar SSHFS en Linux

montar sshfs

SSHFS (SSH File System) es una implementación de un sistema de archivos en el espacio del usuario (FUSE) que permite a los clientes montar un sistema de archivos remoto a través de una conexión SSH. SSHFS utiliza el Protocolo de transferencia de archivos SSH (SFTP) para montar el sistema de archivos remoto en la máquina cliente, y las conexiones entre el cliente y el servidor son seguras y cifradas.

SSHFS se puede utilizar como una alternativa al protocolo FTP tradicional. Es seguro por defecto a través de una conexión SSH y no se necesitan paquetes ni configuraciones adicionales. El SSHFS funciona con una configuración SSH predeterminada simple.

En este tutorial, aprenderá cómo montar un directorio remoto de forma segura utilizando SSHFS entre dos máquinas Linux (cliente y servidor). Esta guía también incluye cómo configurar chroot en SSHFS que evitará que los usuarios accedan a los directorios de otros usuarios.

Requisitos previos

Para seguir esta guía, necesitará dos máquinas Linux, un cliente y un servidor. Puede usar cualquier distribución de Linux y asegurarse de que el servidor tenga un servidor OpenSSH instalado y que tenga un usuario que no sea root con los privilegios de sudo root.

Instalación de SSHFS en su computadora local

Por defecto, SSHFS Los paquetes están disponibles en la mayoría de las distribuciones de Linux, incluidas Debian/Ubuntu, RHEL/CentOS/Rocky y ArchLinux/Manjaro. Puede instalarlo fácilmente usando el administrador de paquetes de su sistema. En esta sección, instalará SSHFS en su máquina local/cliente.

Primero, actualice su lista de índice de paquetes ejecutando el siguiente comando.

# For Debian/Ubuntu
sudo apt update

# For RHEL/CentOS/RockyLinux
sudo dnf check-update

# For ArchLinux/Manjaro
sudo pacman -Syu


Despu√©s de actualizar el √≠ndice de su paquete, instale el paquete SSHFS usando su administrador de paquetes como se muestra a continuaci√≥n. En la distribuci√≥n Debian y Archlinux, el paquete se llama ‘sshfs‘, pero en la distribuci√≥n basada en RHEL, el paquete se llama ‘fusible-sshfs‘.

# For Debian/Ubuntu
sudo apt install sshfs

# For RHEL/CentOS/RockyLinux
sudo dnf install fuse-sshfs

# For ArchLinux/Manjaro
sudo pacman -S sshfs


Ahora ha completado la instalación del paquete SSHFS en su máquina local. A continuación, aprenderá el comando básico para montar y desmontar un directorio/partición remoto en su máquina local mediante el comando SSHFS.

B√°sico: montar y desmontar usando SSHFS

Antes de comenzar con el comando SSHFS, aseg√ļrese de tener un servidor Linux con OpenSSH instalado habilitado encima. Para la autenticaci√≥n del usuario en el servidor, puede utilizar la autenticaci√≥n basada en contrase√Īa SSH o la autenticaci√≥n basada en clave SSH. Sin embargo, puede tener en cuenta el uso de la autenticaci√≥n basada en clave SSH, que es m√°s segura que la autenticaci√≥n basada en contrase√Īa.

En esta secci√≥n, aprender√° el comando b√°sico de ‘sshfs’ para montar un directorio/partici√≥n remota desde el servidor a la m√°quina local/cliente. Adem√°s, aprender√° c√≥mo desmontar sshfs de su m√°quina local.

1. El comando b√°sico de ‘sshfs‘ para montar un directorio en la m√°quina local a trav√©s del protocolo SSH se encuentra a continuaci√≥n.

sshfs [email protected]:/remote/directory /local/directory

En la pr√°ctica, monte el directorio remoto ‘/srv/data’ desde el servidor ‘172.16.1.10’ al directorio de la m√°quina local ‘~/data’. Este ejemplo utiliza el usuario de SSH ‘johndoe’.

sshfs [email protected]:/srv/data ~/data

Ahora se le solicitar√° la autenticaci√≥n de contrase√Īa si est√° utilizando la autenticaci√≥n basada en contrase√Īa para su SSH.

montar sshfs

Para verificar, ejecute el comando ‘ls’ en el directorio ‘~/data’ en la m√°quina local.

ls -lah ~/data

Ver√° una lista de archivos del servidor remoto en su m√°quina local.

Verificar el directorio de montaje

2. Ahora, para desmontar el directorio remoto de su m√°quina local, ejecute el comando ‘fusermount’ como se muestra a continuaci√≥n. Este comando se usa para montar y desmontar sistemas de archivos FUSE.

fusermount -u ~/data

desmontar sshfs

3. Otro ejemplo del comando ‘sshfs’ que te puede interesar.

El comando ‘sshfs’ con la opci√≥n de depuraci√≥n ‘-d’. Siempre que tenga problemas con el comando ‘sshfs’, use la opci√≥n adicional ‘-d’ para mostrar todos los mensajes de depuraci√≥n al establecer una conexi√≥n con el servidor.

sshfs [email protected]:/remote/directory /local/directory -d

Ahora, si est√° ejecutando un servidor con un puerto SSH no est√°ndar, puede agregar la opci√≥n ‘-p’ seguida de su puerto SSH.

sshfs [email protected]:/remote/directory /local/directory -C -p 2222

La opci√≥n ‘-C’ habilitar√° la compresi√≥n, equivalente a la opci√≥n ‘-opression=yes’ en el comando ssh.

Para obtener una referencia completa, puede usar la opci√≥n ‘–help’ o usar la p√°gina de manual de SSHFS.

sshfs --help
man sshfs

Configuración de Chroot en SSHFS

En esta secci√≥n, aprender√° c√≥mo habilitar chroot en SSHFS, lo que se puede lograr configurando el servidor SSH y especificando el usuario y el directorio. El entorno chroot limitar√° el acceso al directorio, pero su usuario a√ļn puede leer y escribir en el directorio de montaje.

1. Primero, crear√° un nuevo directorio chroot para su usuario y permitir√° el acceso de lectura y escritura. En esta gu√≠a, crear√° un nuevo directorio compartido ‘/srv/shared’, luego crear√° un nuevo directorio de inicio y un directorio de datos para cada usuario.

Ejecute el siguiente comando para crear un nuevo directorio principal compartido ‘/srv/shared’ y cambie la propiedad al usuario y al grupo ‘ra√≠z’.

mkdir -p /srv/shared
sudo chown -R root:root /srv/shared

2. Ahora, cree otro directorio para cada usuario en el directorio ‘/srv/shared’. Y aseg√ļrese de cambiar la propiedad de ese directorio al usuario y al grupo ‘ra√≠z’.

mkdir -p /srv/shared/johndoe
sudo chown -R root:root /srv/shared/johndoe

3. A continuaci√≥n, cree el directorio ‘data’ dentro del directorio de inicio del usuario ‘/srv/shared/johndoe’. Luego cambie la propiedad de ese directorio al usuario ‘ra√≠z’ y al grupo ‘johndoe’. Por √ļltimo, permita que el grupo ‘johndoe’ lea y escriba en ese directorio.

mkdir -p /srv/shared/johndoe/data
sudo chown -R root:johndoe /srv/shared/johndoe/data
sudo chmod g+rwx /srv/shared/johndoe/data

Ahora, puede montar el directorio remoto ‘/data’, pero es equivalente al directorio ‘/srv/shared/johndoe/data’ en el servidor.

configurar el directorio chroot

4. Despu√©s de haber creado el directorio chroot para su usuario, deber√° editar la configuraci√≥n SSH ‘/etc/ssh/sshd_config’. Ed√≠talo usando nano o tu editor de texto favorito.

sudo nano /etc/ssh/sshd_config

Agregue las siguientes líneas al archivo.

Subsystem sftp internal-sftp
Match User johndoe 
       ChrootDirectory /srv/shared/%u
       ForceCommand internal-sftp
       AllowTcpForwarding no
       X11Forwarding no

La configuraci√≥n ‘internal-sftp‘ permitir√° que SSH tambi√©n act√ļe como un servidor SFTP. Luego defina el ‘ChrootDirectory‘para el usuario’johndoe‘ hacia ‘/srv/compartido/%u‘directorio. Los ‘%u‘ significa como nombre de usuario.

Guarde y cierre el archivo. Publicidad

5. A continuaci√≥n, ejecute el siguiente comando para verificar la configuraci√≥n de SSH y aseg√ļrese de no obtener errores de sintaxis. Luego reinicie el servicio SSH para aplicar una nueva configuraci√≥n.

sudo sshd -t
sudo systemctl restart sshd

6. Ahora, regrese al cliente/m√°quina local, luego monte el directorio remoto en el entorno chroot. Debe usar el directorio ‘/data’, en lugar del directorio de ruta completo ‘/srv/shared/johndoe/data’. Y tiene los privilegios para leer, escribir y ejecutar en el directorio ‘datos’.

sshfs [email protected]:/data ~/data

Para verificar el acceso de escritura, cree un nuevo archivo en su m√°quina cliente usando el siguiente comando.

cd ~/data
echo "This file from client machine" >> another-file.md

escritura de prueba

Ahora, regrese al servidor, navegue hasta el directorio ‘/srv/shared/johndoe/data’, verifique el archivo disponible en ese directorio.

cd /srv/shared/johndoe/data/
ls

cat another-file.md


Ver√° el archivo que acaba de crear desde la m√°quina cliente.

Verificar archivo en el servidor

En esta sección, creó el directorio chroot para los usuarios de SSHFS y configuró el servicio SSH para habilitar chroot.

Solución de problemas

Si obtiene un error en la conexión SSHFS, puede solucionar su conexión de las siguientes maneras.

Puede usar el modo de depuraci√≥n con la opci√≥n ‘-d’. Con esta opci√≥n, ver√° registros de su conexi√≥n en su terminal shell.

Ejecute el comando ‘sshfs’ con el modo de depuraci√≥n como se muestra a continuaci√≥n.

sshfs [email protected]:/data ~/mnt -d

Otra forma de intentarlo es revisando el registro SSH en su servidor. Antes de usar el comando ‘sshfs’, abra una nueva terminal y con√©ctese a su servidor, luego ejecute el comando ‘tail’ para verificar el servicio de registro SSH.

En el sistema basado en Ubuntu/Debian, el registro de SSH est√° disponible en ‘/var/log/auth.log’. Y para el sistema basado en RHEL/CentOS, el registro de SSH est√° disponible en ‘/var/log/secure’.

# For Ubuntu/Debian
tail -f /var/log/auth.log

# For RHEL/CentOS
tail -f /var/log/secure


Conclusión

¡Felicidades! Ahora ha aprendido a usar SSHFS para montar un directorio remoto desde el servidor a su máquina local. Además, aprendió cómo configurar el entorno chroot en SSHFS y cómo solucionar problemas de su conexión SSHFS.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *