viernes, 30 de julio de 2010

Como montar carpetas remotamente con SSHFS


sshfs te permite montar una carpeta con fuse utilizando ssh. La idea es conectarte a un equipo remoto, que posea un servido ssh funcionando, y utilizar fuse para montar localmente en tu sistema una carpeta remota. Este método tiene todas las ventajas de seguridad de una conexión por ssh, mientras facilita la usabilidad propia de fuse a la hora de montar directorios.

Si ya tienes instalado un servidor ssh te puedes saltar la primera parte de esta entrada

1. Instalando un servidor ssh.

Para instalar un servidor ssh necesitas el paquete openssh-server:
sudo apt-get install openssh-server
La configuración del server ssh se encuentra en el archivo /etc/ssh/sshd_config. Antes de modificarlo es recomendable crear un respaldo:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original
Tambien puedes proteger tu respaldo contra escritura:
sudo chmod a-w /etc/ssh/sshd_config.original
Personalmente suelo cambiar siempre el puerto (22) que ssh utiliza para transmitir. Para ello busco la linea que dice:
Port 22
y establezco otro puerto. Esta es una forma de evitar los ataques externos reiterados a tu equipo. No es una medida infalible, efectivamente, nada impide que el puerto que escojas aún así sea víctima de un intento de intrusión. Justamente por ello, lo más importante es no utilizar una clave que sea fácil de descubrir. Finalmente, si verdaderamente te preocupa la seguridad, lo mejor es utilizar llaves ssh (ssh keys). Puedes encontrar la manera de implementar tus llaves ssh aquí.
Una vez que hayas realizado todos los cambios en /etc/ssh/sshd_config obviamente debes guardar los cambios y cerrar el archivo. Basta reiniciar el server para que los cambios se hagan efectivos:
sudo /etc/init.d/ssh restart
Si deseas verificar que todo salió bien puedes conectarte remotamente por ssh escribiendo en el terminal:
ssh nombre_usuario@direccion_equipo_remoto
por ejemplo, si el usuario es carlos, la dirección ip del equipo remoto es 123.45.6.7 y el puerto de transferencia ha sido cambiado a 3333, el comando sería:
ssh carlos@123.45.6.7 -p3333
En caso de que el puerto no haya sido modificado no es necesario incluirlo.


 2. Conectándote por sshfs

Ubuntu trae fuse instalado por defecto, por lo que no es necesario instalarlo. Lo que sí debes hacer es verificar que formas parte del grupo fuse. Puedes agregarte a este grupo escribiendo el terminal:
sudo gpasswd -a $USER fuse
$USER será interpretado por el sistema por el nombre de usuario que utilizas. El siguiente paso es instalar sshfs:
sudo apt-get install sshfs
Y listo, ahora lo único que necesitas es montar la carpeta remota. Suponiendo que deseas montar la carpeta de tu equipo remoto llamada ~/Musica (es una buena idea utilizar sshfs para acceder remotamente a tu colección de música). Para ello creas una carpeta en tu equipo local llamada ~/Coleccion_musica. Luego en el terminal escribes:
sshfs nombre_usuario@direccion_equipo_remoto:~/Musica ~/Coleccion_musica
Si utilizamos los datos anteriormente propuestos quedaría así:
ssshfs carlos@123.45.6.7:~/Musica ~/Coleccion_musica -p3333
Nuevamente, si el puerto no ha sido modificado no es necesario incluirlo. A partir de este momento es posible, a través de tu carpeta local ~/Coleccion_musica, al contenido de tu carpeta remota ~/Musica y, lo mejor de todo, es que lo harás a través de ssh.

En caso de que desees desconectarte puedes utilizar el siguiente comando:
fusermount -u ~/Coleccion_musica
Eso es todo.

Fuentes:
https://help.ubuntu.com/community/SSHFS
https://help.ubuntu.com/community/SSH
https://help.ubuntu.com/community/SSH/OpenSSH/ConnectingTo
https://help.ubuntu.com/9.04/serverguide/C/openssh-server.html
https://help.ubuntu.com/community/SSH/OpenSSH/Configuring
http://eldiabloenlosdetalles.net/2006/08/29/howtocomo-usar-sshfs-para-montar-directorios-con-ssh/

6 comentarios:

Anónimo dijo...

Excelente guía, es exactamente lo que usé hace un tiempo y me funcionó...

pero últimamente he tenido este problema: cuando ejecuto el comendo sshf no queda montado el directorio y responde lo siguiente:

read: Connection reset by peer

Filoctetes dijo...

En general cuando obtienes un error de ese tipo es necesario intentar una conexión por SSH, de manera de obtener un mensaje de error más completo, ya que sshfs no proporciona la información mínima para solucionar el problema.
Intenta conectarte por SSH y espera la alerta correspondiente.

Unknown dijo...

todo bien pero debes corregir la siguiente linea

sudo apt-get instal sshfs

por

sudo apt-get install sshfs

Exitos!

Filoctetes dijo...

Corregido el error, muchas gracias.
Saludos.

pancho.lakes dijo...

Hola quisiera saber si me puedes ayudar en algo, intento hacer lo que indica tu manual entre 2 servidores con RedHat y me sale el siguiente error

[root@servidor /]# sshfs root@192.168.1.3:/backup/ /backup_nuevo/
root@192.168.1.3's password:
fuse: device not found, try 'modprobe fuse' first

al intentar esto

[root@servidor /]# modprobe fuse
FATAL: Module fuse not found.

tengo las aplicaciones instaladas

[root@servidor /]# yum list installed|grep fuse
fuse.i386 2.7.4-1.el4.rf installed
fuse-sshfs.i386 2.2-1.el4.rf installed

que podrá ser?, espero me puedas ayudar

atte

pancho

Jorge Caraballo dijo...

¡Me funcionó perfecto! ¡Muy agradecido con su aporte!!! :-D