Algunas veces debido a factores externos, es necesario programar en un servidor remoto, lo cual complica un poco las cosas. Si, ya se que muchos dirán que no es el escenario adecuado, pero si no se puede evitar, tendremos que hacerlo de otra forma, es la idea para programar en un directorio remoto usando SSHFS.
Contenidos
Introducción
El objetivo principal de escribir este artículo es proporcionar una guía paso a paso sobre cómo montar un sistema de archivos Linux remoto utilizando el cliente SSHFS sobre SSH.
Este artículo es útil para aquellos usuarios y administradores de sistemas que desean montar un sistema de archivos remoto en sus sistemas locales para cualquier propósito. En la práctica lo hemos probado instalando un cliente SSHFS en uno de nuestros sistemas Linux y montando con éxito sistemas de archivos remotos.
Antes de continuar con la instalación, comprendamos acerca de SSHFS y cómo funciona.
¿Qué es SSHFS?
SSHFS es el acrónimo de Secure SHell FileSystem, el cual nos permite montar un sistema de archivos remoto en una máquina local utilizando para ello el protocolo de transferencia de archivos de SSH (SFTP).
SEFTP es un protocolo seguro de transferencia de archivos que proporciona acceso a archivos, transferencia de archivos y funciones de administración de archivos siempre a través del protocolo seguro Secure Shell (SSH). Debido a que SSH usa el cifrado de punto a punto y que SSHFS incluye un módulo de kernel llamado FUSE (Sistema de archivos en el espacio de usuario) esto nos permite que cualquier usuario no privilegiado pueda crear su sistema de archivos sin modificar el código del kernel.
Este artículo es valido solo para ordenadores basado en linux, aunque con pequeños cambios se puede usar en MacOsX, y otros SOs *nix.
Instalar el cliente SSHFS en nuestra computadora basada en Linux
Por defecto en algunas distribuciones como Centos/Fedora/Redhat y otras, el paquete no existe en sus repositorios oficiales, por lo que deberemos activar el repositorio EPEL (en el caso de distribuciones basadas en redhat)
# yum install sshfs # dnf install sshfs [On Fedora 22+ releases] $ sudo apt-get install sshfs [On Debian/Ubuntu based systems]
Crear el punto de montaje en nuestro usuario
Una vez que tenemos instalado SSHFS, necesitamos crear un punto de montaje donde montaremos el punt del sistema remoto de ficheros.
mkdir ~/Sites/zero/my-app
Montar el directorio remoto con SSHFS
Una vez creado el punto de montaje, ejecutaremos el comando como usuario, para montar el directorio remoto, en nuestro punto de montaje de tal forma que el montaje y todos sus ficheros y directorios, sean propiedad de nuestro usuario y grupo.
El comando de abajo, presupone que estamos trabajando sobre un servidor remoto que:
- usa SSH configurado en el puerto 24 en lugar del habitual 22. Si el servidor remota usa, el puerto estándar (22), no hace falta incluir -p 24.
- que esta configurado para usar llaves (SSH key authorization)
$ sshfs -p 24 -o uid=$(id -u),gid=$(id -g),auto_cache,reconnect root@hostname_remoto_o_IP:/root/cpanel-api/ /home/miusuario/Sites/zero/my-app
id es un comando que nos permite obtener la información del sistema relativa al usuario sobre el que queremos obtener la información.
Paso 4: Verificar que el directorio remoto esta montado
$ ls -lisah ~/Sites/zero/my-app total 240K 1 4,0K drwxr-xr-x 1 abkrim abkrim 4,0K may 18 11:19 . 4064630 4,0K drwxrwxr-x 5 abkrim abkrim 4,0K may 18 12:16 .. 8 4,0K drwxr-xr-x 1 abkrim abkrim 37 may 18 11:07 app 9 4,0K drwxr-xr-x 1 abkrim abkrim 20 may 18 11:07 bootstrap 10 4,0K -rw-r--r-- 1 abkrim abkrim 359 may 18 11:07 box.json 11 4,0K -rw-r--r-- 1 abkrim abkrim 1,4K may 18 11:07 composer.json 12 168K -rw-r--r-- 1 abkrim abkrim 168K may 18 11:20 composer.lock 13 4,0K drwxr-xr-x 1 abkrim abkrim 91 may 18 11:07 config 14 4,0K -rwxr-xr-x 1 abkrim abkrim 1,8K may 18 11:07 cpanel-api 15 4,0K drwxr-xr-x 1 abkrim abkrim 18 may 18 11:07 database 3 4,0K -rw-r--r-- 1 abkrim abkrim 234 may 18 11:07 .editorconfig 2 4,0K drwxr-xr-x 1 abkrim abkrim 4,0K may 18 11:23 .git 4 4,0K -rw-r--r-- 1 abkrim abkrim 175 may 18 11:07 .gitattributes 5 4,0K -rw-r--r-- 1 abkrim abkrim 86 may 18 11:22 .gitignore 6 4,0K -rw-r--r-- 1 abkrim abkrim 1,1K may 18 11:07 LICENSE 16 4,0K -rw-r--r-- 1 abkrim abkrim 824 may 18 11:07 phpunit.xml.dist 7 4,0K -rw-r--r-- 1 abkrim abkrim 238 may 18 11:07 README.md 17 4,0K drwxr-xr-x 1 abkrim abkrim 79 may 18 11:07 tests 18 4,0K drwxr-xr-x 1 abkrim abkrim 4,0K may 18 11:21 vendor $ df -h | grep my-app root@my_hostname_remoto:/root/cpanel-api/ 397G 318G 80G 80% /home/abkrim/Sites/zero/my-app
Montaje permanente como usuario
No suelo usar montajes permanentes de este tipo por cuestiones obvias, ya que estoy montando en local un directorio root. Ademas existen algunas cuestiones sobre seguridad al respecto. Yo prefiero crear un alias en mi entrada de zshrc.
Pero si queremos añadir el montaje de nuestros directorio remoto con SSHFS, deberemos acudir a la edición del fichero /etc/fstab. El contenido de abajo es para este escenario, es decir, el montaje de una unidad remota, mediante SSHFS, con llave SSH, en un puerto diferente al habitual.
root@hostname_remoto:/root/cpanel-api/ /home/user/Sites/zero/my-app fuse.sshfs x-systemd.automount,_netdev,users,idmap=user,identityfile=/home/user/.ssh/id_rsa,uid=1000,gid=1000,port=24,allow_other,reconnect 0 0
Enlaces interesantes
- How to mount remote directory on Windows using SSHFS-Win
- How To Mount a Remote Directory With SSHFS on a Linux
- SSHFS Archilinux
Recomendaciones
Es recomendable durante las prubeas si obtienes errores del tipo «reset by peer» o sin mensaje pero que no monta, taner un tail al fichero de logs del subsistema de SSH, para ver la respuesta del servidor.
Agradecimientos
Por la foto de Caspar Camille Rubin on Unsplash
Comparte este articulo en