Inicio
» LINUX
»
Cómo montar automáticamente un directorio SSHFS remoto al arrancar en Debian
Cómo montar automáticamente un directorio SSHFS remoto al arrancar en Debian
Configuras un montaje SSHFS, confirmas que funciona, reinicias Debian y, de repente, el directorio remoto vuelve a estar vacío. El comando manual funcionó porque estabas conectado, la red ya estaba en línea y SSH podía solicitar una contraseña o la confirmación de la clave de host si era necesario. Los montajes al inicio del sistema no ofrecen esas ventajas.
La solución fiable consiste en hacer que la autenticación SSH no sea interactiva, crear una /etc/fstabentrada persistente e indicar a systemd que el sistema de archivos depende de la red. Esta guía comienza con la configuración más sencilla y funcional, y luego añade opciones para redes lentas y sesiones SSH interrumpidas. Los ejemplos utilizan user@server.example.com:/srv/datacomo directorio remoto y /mnt/remotecomo punto de montaje local.
La página de paquetes de Debian actualmente incluye SSHFS 3.7.3 para Debian 12 (Bookworm), y SSHFS utiliza el subsistema SFTP proporcionado por SSH. Consulte la página de paquetes de Debian SSHFS y el manual oficial de SSHFS . Las revisiones de los paquetes varían entre las versiones de Debian, pero el método de montaje de arranque que se describe a continuación se basa en el comportamiento estándar de fstab y systemd.
¿Por qué funciona un montaje SSHFS manualmente pero falla al arrancar el sistema?
La mayoría de los fallos se deben a tres causas. Primero, SSH puede requerir una contraseña, una frase de contraseña o la confirmación de la clave de host la primera vez. El proceso de arranque no dispone de una terminal donde pueda responder a estas solicitudes. Segundo, el montaje puede iniciarse antes de que la red o el DNS estén completamente operativos. Tercero, una conexión SSH de larga duración puede quedar inactiva tras una interrupción de la red.
La documentación de systemd de Debian explica que la _netdevopción fuerza a que un montaje se trate como un montaje de red. Los montajes de red se ordenan después de network-online.target. La misma documentación señala que /etc/fstablas entradas se convierten en unidades de montaje nativas de systemd al arrancar. Consulte systemd.mount(5) en Debian .
1. Instale SSHFS y cree el punto de montaje.
Instale el cliente SSHFS incluido y cree el directorio local que expondrá los archivos remotos:
SSHFS está basado en FUSE, la interfaz de sistema de archivos en espacio de usuario de Linux. En Debian 12, el sshfspaquete depende de FUSE 3 y del cliente OpenSSH.
Instale el paquete SSHFS y cree el directorio local que se convertirá en el punto de montaje.
2. Configura la autenticación SSH para que se ejecute sin necesidad de confirmación.
Para un montaje a nivel de sistema iniciado por systemd, es sencillo crear una clave dedicada propiedad del usuario root, ya que el asistente de montaje se ejecuta como root. Genere una sin contraseña solo si la máquina es de confianza y la clave está restringida a este propósito:
Si el comando finaliza correctamente sin mostrar ningún mensaje, la autenticación está lista para el arranque. Si solicita confirmar la huella digital del servidor, conéctese interactivamente como root, verifique la huella digital con una fuente confiable y acéptela. No intente solucionar los errores de clave de host deshabilitando la verificación del host.
OpenSSH está documentado BatchMode=yesespecíficamente para scripts y trabajos por lotes, ya que desactiva las solicitudes de contraseña y confirmación. Las claves de host se comparan con el known_hostsarchivo del usuario. Consulte el manual de Debian ssh(1) y ssh_config(5) .
Prepare el acceso SSH basado en claves y verifique que la conexión se pueda establecer sin intervención del usuario.
3. Confirme manualmente el montaje SSHFS antes de editar fstab.
No depure el orden de arranque hasta que funcione el comando básico SSHFS. Monte el directorio una vez usando la misma clave:
Comprueba que puedes listar los archivos remotos y, a continuación, desmóntalo antes de probar fstab:
ls -la /mnt/remote
sudo fusermount3 -u /mnt/remote
El manual de SSHFS recomienda reconnectrestablecer conexiones interrumpidas. También explica que ServerAliveIntervalpuede evitar que un montaje parezca congelado cuando una conexión SSH inactiva se interrumpe silenciosamente. Con un intervalo de 15 segundos y el recuento predeterminado de OpenSSH de tres sondeos sin respuesta, se detecta una conexión inactiva en aproximadamente 45 segundos; aquí se indica el recuento explícitamente para que el comportamiento sea evidente.
4. Agregue una entrada persistente de SSHFS a /etc/fstab.
Realice una copia de seguridad del archivo antes de editarlo:
El fuse.sshfssubtipo es reconocido por las herramientas de montaje de Debian. El manual SSHFS original también lo documenta sshfscomo un tipo de sistema de archivos fstab y hace anotaciones para garantizar la compatibilidad. El manual fstab(5)fuse.sshfs de Debian describe los seis campos fstab y recomienda la notación de subtipo de sistema de archivos como .fuse.sshfs
Opción
Por qué está aquí
_netdev
Hace que systemd trate el punto de montaje como dependiente de la red.
IdentityFile=...
Selecciona la clave privada de forma explícita en lugar de depender de un agente interactivo.
BatchMode=yes
En lugar de esperar una contraseña o una solicitud de confirmación, falla.
reconnect
Permite que SSHFS restablezca una conexión interrumpida.
ServerAliveInterval=15
Envía sondeos de mantenimiento de conexión a nivel SSH durante los períodos de inactividad.
ServerAliveCountMax=3
Limita las sondas keepalive sin respuesta antes de que se desconecte la conexión SSH.
default_permissions
Permite la comprobación de permisos locales, además de la autorización remota.
Agregue el punto de montaje SSHFS a /etc/fstab con opciones explícitas de red, identidad y reconexión.
5. Comprueba la entrada de fstab antes de reiniciar.
/etc/fstabEs mucho más fácil corregir un error tipográfico antes de reiniciar. Pídele a systemd que recargue las unidades de montaje generadas y luego prueba la entrada:
sudo systemctl daemon-reload
sudo mount -a
findmnt -T /mnt/remote
ls -la /mnt/remote
Si mount -ano devuelve ningún error e findmntinforma , se acepta la sintaxis fstab y se monta el sistema de archivos. El manual mount(8)fuse.sshfs de Debian confirma que monta los sistemas de archivos fstab excepto las entradas marcadas .mount -anoauto
Verifique la entrada fstab con mount -a, findmnt y la unidad de montaje systemd generada antes de reiniciar.
¿Qué ocurre si la red no está lista a tiempo?
_netdevEsto proporciona a systemd la semántica de ordenación correcta, pero network-online.targetsu precisión depende del servicio de gestión de red que la proporciona. El Wi-Fi, las VPN, los retrasos de DHCP, los retrasos de DNS y las pilas de red inusuales aún pueden hacer que un montaje de arranque inmediato no sea fiable.
En ese caso, utilice el automontaje de systemd para que el proceso de arranque cree un punto de automontaje y establezca la conexión SSHFS solo cuando algo acceda por primera vez /mnt/remote. Añada x-systemd.automounta las opciones:
Esta suele ser la mejor opción para portátiles, sistemas Wi-Fi o servidores donde el host remoto puede no estar disponible ocasionalmente. Modifica ligeramente la semántica: el montaje automático se prepara durante el arranque, pero la conexión SSH real se establece en el primer acceso. Si una aplicación requiere absolutamente que el directorio remoto esté conectado antes de iniciarse, mantenga el montaje de red normal y haga que la unidad systemd de esa aplicación dependa de la unidad de montaje.
¿Necesitas allow_other?
Por defecto, un montaje FUSE solo es accesible con los permisos asociados al contexto de montaje. El manual de SSHFS documenta allow_othercómo permitir el acceso a otros usuarios locales. No lo añada a menos que un servicio u otra cuenta necesite realmente los archivos montados.
Si decide usarlo allow_other, revise /etc/fuse.confprimero las implicaciones de seguridad de FUSE. Generalmente, es apropiado combinarlo con default_permissionspara que no se omitan las comprobaciones de permisos locales de Unix. La cuenta SSH remota sigue siendo la que determina en última instancia qué operaciones permite el servidor.
Solución de problemas de fallos de SSHFS durante el arranque
La montura espera una contraseña
Repita la prueba no interactiva con sudo ssh ... -o BatchMode=yes. Si falla, corrija la autenticación de clave pública antes de modificar systemd. Una clave protegida por una contraseña también requerirá un agente u otro mecanismo de secreto de arranque; un montaje simple de fstab no puede escribir la contraseña automáticamente.
Falló la verificación de la clave del host.
No lo aplique StrictHostKeyChecking=nocomo solución general. Verifique si el servidor se reconstruyó o si su clave de host se modificó legítimamente. La verificación de la clave de host SSH es un control de seguridad contra la suplantación de identidad y los ataques de intermediario.
El montaje funciona después de iniciar sesión, pero no durante el arranque.
Compruebe el nombre de la unidad generada y su registro. Para /mnt/remote, systemd normalmente escapa la ruta a mnt-remote.mount:
systemctl status mnt-remote.mount
journalctl -b -u mnt-remote.mount
Si agregaste x-systemd.automount, también inspecciona:
systemctl status mnt-remote.automount
El acceso se bloquea después de que el servidor o la red desaparecen.
Mantenga habilitadas las funciones keepalive de Keep reconnecty SSH. El manual de SSHFS advierte que las operaciones del sistema de archivos pueden bloquearse indefinidamente si no se detecta una conexión interrumpida. Las funciones keepalive limitan la detección de fallos, pero cualquier operación de E/S que estuviera en curso cuando se interrumpió la conexión aún puede fallar y la aplicación podría tener que reintentarla.
Cómo verificar que el montaje realmente sobrevive a un reinicio.
Una vez mount -aque tenga éxito, reinicie la máquina:
sudo reboot
Tras restablecer la conexión, ejecute estas comprobaciones:
findmnt -T /mnt/remote
systemctl is-active mnt-remote.mount
ls -la /mnt/remote
Si elige x-systemd.automount, la unidad de montaje puede permanecer inactiva hasta el primer acceso. Compruebe primero el montaje automático y, a continuación, actívelo con ls:
systemctl is-active mnt-remote.automount
ls -la /mnt/remote
findmnt -T /mnt/remote
Una configuración exitosa presenta cuatro propiedades observables: la autenticación SSH se completa sin interacción, la entrada fstab se verifica correctamente mount -a, systemd reconoce el montaje como dependiente de la red y los archivos remotos son accesibles después de un reinicio limpio. Si alguna de estas comprobaciones falla, solucione el problema directamente en esa capa en lugar de agregar más opciones de montaje al azar.