Compartir ficheros con SSHfs

networking

Cómo montar un directorio de otra máquina que tenga un servidor de SSH utilizando el paquete sshfs

Se puede obtener una funcionalidad similar a NFS pero con algunas ventajas.

  • No necesitas nada especial en el servidor, sólo el omnipresente servidor de SSH. Ni portmap ni nada por el estilo, como ocurre con NFS
  • Todas las comunicaciones van cifradas, es más seguro y fácil de administrar.

Obviamente es sensiblemente más lento.

Ingredientes para el servidor

Únicamente el servidor SSH convencional.

Ingredientes para el cliente

En el cliente (el que monta el directorio remoto) debes instalar el paquete sshfs, que depende de fuse, pero que usando apt-get no es ningún problema.

# apt-get install sshfs

Instalar fuse (si no lo tienes)

Después hay que instalar el driver de fuse, que permite tener sistemas de ficheros en espacio de usuario. Para ello se instala los fuentes de fuse y se compilan con el maravilloso module-assistant.

# apt-get install linux-headers-$(uname -r)
# m-a a-i fuse

Tienes que cargar el módulo:

# modprobe fuse

Y asegurarte que se carga cuando reinicies:

# echo fuse >> /etc/modules

A montar…

Ya puedes montar cualquier directorio del servidor al que tengas acceso:

# sshfs usuario@servidor.net:/ruta/en/servidor /ruta/en/cliente

también puedes hacer lo mismo con mount, así:

# mount -t fuse sshfs#usuario@servidor.net:/ruta/en/servidor /ruta/en/cliente

Y lo puedes añadir a /etc/fstab:

sshfs#servidor.net:/ruta/en/servidor    /ruta/en/cliente    fuse    defaults    0  0

Montar como usuario “raso”

Hay dos formas de conseguirlo:

  • Añadir el flag “user” a la entrada en fstab y usar mount/umont como de costumbre
  • Añadir el usuario al grupo fuse y usar el comando sshfs. Eso lo puedes hacer con:
    # addgroup pepe fuse

Desmontar

Si eres root:

# umount /ruta/en/cliente

Como usuario normal:

# fusermount -u /ruta/en/cliente

Qué rollo de claves!

Si no quieres tener que poner la clave de tu cuenta en la máquina remota cada vez que montas, puedes utilizar el esquema de autenticación por clave privada que tiene SSH.

Referencias

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de arturo

Has probado con esto ??

Lo suyo es probar a montarlo primero con:

# shfsmount usuario@maquina:/var/www /mnt/remote

por ejemplo, si esto funciona añade esto al /etc/fstab:

sshfs#user@host:/    /mnt/host    fuse    defaults    0 0

Para más información:

FUSEWiki - FAQ

Un saludo, Arturo.

**********************************************************************************
Hay tontos que tontos parecen, hay tontos que tontos son, pero
hay una clase peor de tontos que hacen parecer tontos a los que
listos son.
*****************************

**********************************************************************************
Hay tontos que tontos parecen, hay tontos que tontos son, pero
hay una clase peor de tontos que hacen parecer tontos a los que
listos son.
*****************************

Imagen de david.villa

Aún no está en Debian

Según el FAQ hay un “helper” en /sbin/mount.fuse que es el que permite hacer el apaño de “sshfs#user@…”. Se supone que está en la versión >=2.4, pero yo tengo la 2.4.0-1 y parece que en el paquete Debian no está ese fichero, aunque si que está en el CVS de FUSE. Supongo que será un fallejo del empaquetador.

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

Imagen de david.villa

Revisando

este tema, he visto que el “helper” ya funciona perfectamente en Debian, probablemente hace años. Así que lo he aprovechado para incorporarlo a la receta.

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.