Cómo Compartir carpeta con SSHFS

Para compartir una carpeta entre dos computadoras Manjaro usando SSHFS, siga estos pasos:

  1. Instale el servidor SSH y SSHFS en ambas computadoras:

En ambas computadoras, abra un terminal y ejecute el siguiente comando para instalar el servidor SSH y SSHFS:

sudo pacman -S openssh sshfs
  1. Inicie y habilite el servidor SSH:

En la computadora que compartirá la carpeta (el servidor), inicie y habilite el servidor SSH ejecutando los siguientes comandos:

sudo systemctl enable --now sshd
  1. Cree una carpeta para compartir:

En el servidor, cree una carpeta que desee compartir:

sudo mkdir -p /remote/path
sudo chown $USER:$USER /remote/path
  1. Configure la autenticación con clave SSH (opcional):

Para evitar ingresar una contraseña cada vez que se conecte, puede configurar la autenticación con clave SSH entre las dos computadoras. En la computadora cliente, genere un par de claves SSH si aún no tiene uno:

ssh-keygen

Luego, copie la clave pública al servidor:

ssh-copy-id username@server_ip_address

Reemplace “username” con su nombre de usuario en el servidor y “server_ip_address” con la dirección IP del servidor.

  1. Monte la carpeta compartida usando SSHFS:

En la computadora cliente, cree una carpeta donde desee montar la carpeta compartida:

sudo mkdir -p /local/path
sudo chown $USER:$USER /local/path

Ahora, monte la carpeta compartida desde el servidor usando SSHFS:

sshfs -o IdentityFile=/home/user/.ssh/id_rsa,idmap=user,allow_other,_netdev,follow_symlinks,ServerAliveInterval=15,ServerAliveCountMax=3,reconnect,noatime,auto username@server_ip_address:/remote/path /local/path

Reemplace “username” con su nombre de usuario en el servidor, “server_ip_address” con la dirección IP del servidor y “/remote/path” con la ruta de la carpeta compartida en el servidor.

La carpeta compartida del servidor ahora debería ser accesible en la computadora cliente a través del directorio “/local/path”.

  1. Desmonte la carpeta compartida:

Cuando haya terminado de usar la carpeta compartida, puede desmontarla en la computadora cliente con el siguiente comando:

fusermount -u /local/path

Recuerde que necesita tener una conexión de red activa entre las dos computadoras y que el servidor SSH debe estar en funcionamiento en la computadora servidor para que SSHFS funcione.

Además, puede agregar el siguiente comando al archivo fstab para montar automáticamente la carpeta compartida al iniciar el sistema:

username:server_ip_address:/remote/path /local/path fuse.sshfs IdentityFile=/home/user/.ssh/id_rsa,idmap=user,allow_other,_netdev,follow_symlinks,ServerAliveInterval=45,ServerAliveCountMax=2,reconnect,noatime,auto,x-gvfs-show 0 0

Explicación de cada opción en ese comando:

  • username:server_ip_address: nombre de usuario y dirección IP del servidor.
  • /remote/path: ruta de la carpeta compartida en el servidor.
  • /local/path: punto de montaje en la computadora cliente.
  • fuse.sshfs: tipo de sistema de archivos.
  • IdentityFile=/home/user/.ssh/id_rsa: ruta al archivo de clave privada SSH.
  • idmap=user: Mapea los ID de usuario y grupo remotos a los ID de usuario y grupo locales.
  • allow_other: permite el acceso a otros usuarios.
  • default_permissions: habilita el uso de permisos predeterminados.
  • _netdev: indica que el sistema de archivos requiere una conexión de red.
  • follow_symlinks: sigue enlaces simbólicos en el sistema de archivos remoto.
  • ServerAliveInterval=45: intervalo en segundos para enviar un mensaje de “keep-alive” al servidor.
  • ServerAliveCountMax=2: número máximo de mensajes de “keep-alive” sin respuesta antes de desconectar.
  • reconnect: intenta reconectar automáticamente en caso de desconexión.
  • noatime: no actualiza el tiempo de acceso al archivo.
  • auto: monta automáticamente el sistema de archivos al iniciar el sistema.
  • x-gvfs-show: muestra el sistema de archivos en el administrador de archivos (por ejemplo, Nautilus).

Tenga en cuenta que debe tener una conexión de red activa entre las dos computadoras y que el servidor SSH debe estar en funcionamiento en la computadora servidor para que SSHFS funcione.

En el caso de que desee utilizar la opción allow_other en su comando SSHFS y encuentre el siguiente error:

fusermount: option allow_other only allowed if 'user_allow_other' is set in /etc/fuse.conf

Esto significa que necesita habilitar la opción user_allow_other en el archivo de configuración /etc/fuse.conf. Para hacerlo, siga estos pasos:

  1. Abra el archivo /etc/fuse.conf con un editor de texto como root. Por ejemplo, usando nano:
sudo nano /etc/fuse.conf
  1. Busque la línea que contiene #user_allow_other y descoméntela eliminando el símbolo # al principio de la línea. Debería verse así:
user_allow_other
  1. Guarde los cambios y cierre el editor de texto.

  2. Ahora, la opción allow_other debería funcionar correctamente con su comando SSHFS.

La opción allow_other permite que otros usuarios (además del usuario que monta el sistema de archivos) accedan a los archivos y directorios compartidos. Habilitar user_allow_other en /etc/fuse.conf permite a los usuarios no root especificar las opciones de montaje allow_other o allow_root. Tenga en cuenta que esto puede tener implicaciones de seguridad, ya que permite el acceso a los archivos compartidos por otros usuarios en el sistema. Asegúrese de comprender las implicaciones de seguridad antes de habilitar esta opción.

Para obtener más información sobre SSHFS y sus opciones, consulte estos recursos:

Se agradecen siempre los aportes como este.

Eso si, en mi experiencia (uso sshfs a menudo) no he tenido que hacer nada especial. Tengo varias máquinas a las que accedo por SSH (son servidores en internet) y SSH normal está configurado para poder acceder a ellas.

Cuando quiero montar una carpeta, simplemente hago:

sshfs server:/ruta/carpeta /ruta/local

Se debe tener en cuenta que las rutas pueden ser relativas. Es decir, que la ruta remota, por defecto, es relativa a la carpeta del usuario (/home/usuario) y la ruta local es, por defecto, relativa a la carpeta actual desde donde se ejecuta el comando.