Por lo general usamos comandos como scp para transferencia de archivos de un server a otro, pero a veces es necesario simplificar el proceso montando un FS en un equipo y poder trabajar mejor, así que hoy examinaremos la herramienta SSHFS para montar un directorio remoto utilizando solo SSH. Esto tiene la ventaja significativa de que no requiere configuraciones complejas y va a utilizar los permisos del usuario SSH en el sistema remoto.
1- Instalación.
Por lo general esta presente en la mayoría de los repositorios Linux, veamos como instalarlo en Ubuntu.
sudo apt install sshfs
2- Montar FS
2.1- Vamos a necesitar una carpeta
sudo mkdir /mnt/shares
2.2- Montado
sudo sshfs -o allow_other,default_permissions USUARIO@SERVER_REMOTO:~/ /mnt/shares
Analicemos las opciones:
-o
seria equivalente a cuando se ejecuta el comandomount
normalmente para montajes de disco que no son SSH. En este caso, está utilizandoallow_other
para permitir que otros usuarios tengan acceso a este montaje (para que se comporte como un montaje de disco normal, ya quesshfs
lo impide de forma predeterminada) ydefault_permissions
(para que, de lo contrario, utilice los permisos regulares del sistema de archivos).USUARIO@SERVER_REMOTO:~/
estamos especificando el usuario, el equipo a conectarnos y la ruta, en este caso~/
para el directorio de inicio del usuario remoto. Esto usa la misma sintaxis que SSH o SCP./mnt/shares
es la ruta al directorio local que se utiliza como punto de montaje.
NOTA: Si nos da un mensaje de Connection reset by peer
, es porque este comando funciona como ssh y requiere las llaves.
2.3- Desmontar
sudo umount /mnt/shares
3- Montar de forma permanente
Para lograr esto basta con usar la ubicación fstab.
sudo nano /etc/fstab
Y agregamos lo siguiente
USUARIO@SERVER_REMOTO:~/ /mnt/shares fuse.sshfs noauto,x-systemd.automount,_netdev,reconnect,identityfile=/home/USUARIO/.ssh/id_rsa,allow_other,default_permissions 0 0
USUARIO@SERVER_REMOTO:~/
Usuario y ruta./mnt/shares
es donde quedará montado localmente.fuse.sshfs
especifica el driver que se utiliza para montar este directorio remoto.noauto,x-systemd.automount,_netdev,reconnect
son un conjunto de opciones que trabajan juntas para garantizar que los montajes permanentes en unidades de red se comporten correctamente en caso de que la conexión de red se caiga desde la máquina local o la máquina remota.identityfile=/home/USUARIO/.ssh/id_rsa
especifica una ruta a una llave SSH local para que el directorio remoto se pueda montar automáticamente. Es necesario especificar esto porque/etc/fstab
efectivamente se ejecuta como root y, de lo contrario, no sabría qué configuraciones de SSH de nombre de usuario verificar para obtener una clave en la que confíe el servidor remoto.allow_other,default_permissions
son los permisos.0 0
significa que el sistema de archivos remoto nunca debe ser volcado o validado por la máquina local en caso de errores. Estas opciones pueden ser diferentes al montar un disco local.
Ahora cada vez que reiniciemos quedará el FS montado, también podemos hacer:
mount -a