1/2/09

Montar directorios remotos via ssh en Linux

La habilidad de expotar sistemas de ficheros (FS) es extremadamente útil, es por eso que programas como NFS o Samba son tan populares. Desafortunadamente, ambos están típicamente limitados a la red local que limita su uso. Un FS ideal permitiría conexiones encriptadas a un sitio remoto, sin complicadas conexiones VPN.
Eso es exactamente lo que hace shfs, o SHell File System. Permite montar directorios remotos via ssh usando un módulo del kernel (como smbfs) y una herramienta "user-space", como mount.

Para empezar, puedes descargarte shfs de:
http://shfs.sourceforge.net/
Antes de empezar, asegúrense que tienen las fuentes del kernel instaladas y, por supuesto,
el compilador de C, que tiene que ser exactamente la misma versión que compiló el kernel:
$ mv shfs-0.35.tar.gz /usr/local/src
$ cd /usr/local/src
$ tar xvzf shfs-0.35.tar.gz
$ cd shfs-0.35
$ make
$ sudo make install
Recuerden remplazar 0.35 por la versión que descargaron de la pagina....

El ejemplo de arriba compilará el módulo del kernel para tu kernel (shfs soporta tanto el kernel 2.4 como el 2.6) y también compilará la utilidad shfsmount.
Si estás usando gcc4, necesitarás descargar y aplicar este parche para que shfs compile correctamente:
http://atrey.karlin.mff.cuni.cz/~qiq/src/shfs/shfs-0.35/gcc4-compilefix.patch.
Una vez tengas instalado shfs , carga el módulo del kernel y monta tu primer sistema de ficheros remoto:
# modprobe shfs
# shfsmount user@remote /mnt/user
Esto montará el direcorio home de user@remote en el directorio /mnt/user.
También puedes usar el propio comando mount:
# mount -t shfs user@remote:/data /data
Así pues, podrías automontar ciertos directorios en el arranque añadiendo entradas en el /etc/fstab. Por supuesto, querrás usar las claves ssh ya que en cada arranque se te preguntará por un password. Como puedes ver, shfs es extremadamente fácil de usar y es muy versátil. Te permite montar un disco remoto de la oficina en tu escritorio de casa, reconociéndolo como local, pero sin el agobio de hacer nada aparte de habilitar el ssh en la máquina remota.

Para los usuarios que disponen de apt-get o aptitude, la cosa es mas fácil!!!
$ sudo aptitude install sshfs
SHFS necesita el módulo “fuse” para poder funcionar, por lo que tendréis que ejecutarlo siempre. Para que no lo tengáis que hacer a mano y lo cargue el sistema automáticamente, abran el fichero /etc/modules:
$ sudo gedit /etc/modules
Si está, no tienen que hacer nada más. Los que no lo tengan simplemente agregan “fuse” al final del fichero por ejemplo, guardan y cierran...

Los que metieron ahora tienen dos opciones para cargar fuse, reiniciar y que se cargue automáticamente mediante el archivo modules o cargarlo manualmente hasta que reinicien. Supongo que preferís la segunda opción:
$ sudo modprobe fuse
Hecho esto el último requerimiento que necesitamos es tener el servidor SSH funcionando.
En cuanto a configuración tan sólo tienen que agregar su cuenta al grupo que tiene acceso a fuse:
$ sudo usermod -G fuse -a tu_cuenta
Aconsejo que ahora reinicien el entorno gráfico (Ctrl+Alt+Backspace) para tener la certeza de que se aplique la adicción al grupo, en caso contrario es muy probable que de un error de permisos...

En el fondo ya está todo listo para montar la carpeta remota en nuestra carpeta local. Vamos a probarlo.

Creen una carpeta donde quieran. Para que sirva de ejemplo voy a crear la carpeta “pepino” en “/home/ceec/”. Tan sólo tenen que cambiar “ceec” por su cuenta en los siguientes pasos
$ mkdir /home/ceec/pepino
La carpeta “pepino” va a ser el punto de montaje de la carpeta remota. Es decir, cuando acceda a “pepino” voy a acceder a la carpeta del otro ordenador. En principio para montarla
$ sshfs ceec@192.168.1.4:/home/ceec /home/ceec/pepino/
donde:
  • sshfs es el comando que va a realizar el montaje remoto
  • ceec es la cuenta a la que tenéis acceso en el equipo remoto.
  • 192.168.1.4 es la ip del PC remoto. Pueden usar una IP pública para acceder desde el trabajo a casa.
  • /home/ceec es la carpeta del ordenador remoto que quiero montar en…
  • /home/ceec/pepino/ que es la carpeta del equipo que tengo delante.
Supongo que ya lo entendieron... CUIDADO! SSH y por consiguiente SSHFS usan el puerto 22 por defecto. Si no mofificaron el puerto de escucha de ssh no les funcionara. Para forzar un puerto podemos hacer
$ sshfs -p 8448 ceec@192.168.1.4:/home/ceec /home/ceec/pepino/
Siendo 8448 el puerto del ordenador remoto.

A partir de este momento, todo lo que borren, añadan, modifiquen de esa carpeta, lo haran también de la carpeta del otro ordenador.

Una vez montada la carpeta… ¿cómo se desmonta?
$ fusermount -u /home/ceec/pepino
Listo. Es un buen método para tener algo de nuestro ordenador siempre accesible, o bien para trabajar directamente sobre tus archivos remotos, o bien para compartir lo que queráis a modo de FTP casero o algo parecido. Hay otras alternativas como SFTP y SAMBA, pero hay un punto a favor muy bueno para usar SSHFS, su facilidad de instalación, configuración, uso y, sobre todo, su seguridad ya que toda la información que viaje de un equipo al otro estará encriptada.

Nota:
   Los usuarios de windows pueden ver: dokan


No hay comentarios.: