sshfs no se monta automáticamente en el arranque, a pesar de la configuración / etc / fstab

24

Al configurar una estación de trabajo Ubuntu (13.04), estoy tratando de tener un sistema de archivos remoto montado (sobre ssh).

La configuración actual

  • Creé el usuario someuser y lo agregué al grupo de fusibles

  • Mi entrada fstab dice:

    sshfs#[email protected]:/remote_dir  /media/remote_dir/   fuse    auto,_netdev,port=22,user,allow_other,noatime,follow_symlinks,IdentityFile=/home/someuser/.ssh/id_rsa,reconnect     0       0
    

desde mi entendimiento:

  • auto : solicita explícitamente que se instale el fs remoto en el arranque
  • _netdev : espera a que la interfaz esté activa antes de intentar montar
  • usuario : permite que cualquier usuario solicite que se monte esta ubicación remota específica (inútil en la perspectiva del usuario raíz que la monta automáticamente en el arranque)
  • allow_other : permitirá que cualquier usuario (en el grupo de fusibles) acceda a los fs montados
  • IdentityFile : apunta a la clave privada emparejada con la clave pública agregada en /home/someuser/.ssh/authorized_key de la máquina remota.
  • volver a conectar : No estoy seguro ... ¿Intentará volver a conectar si se pierde la conexión?

El problema

  • En el arranque, inicio sesión con alguien , enciendo una terminal y / media / remote_dir está vacío.

  • Pero desde el mismo usuario (o la raíz), puedo montarlo simplemente escribiendo:

    mount sshfs#[email protected]:/remote_dir
    

    También se monta automáticamente por arte de magia si hago clic en remote_dir en un navegador de archivos.

¿Alguna pista sobre lo que podría faltar?

Anuncio N
fuente
¿Alguna vez has resuelto esto? Me encuentro con el mismo problema en una máquina Ubuntu 14.04 de 64 bits.
glibdud
Al ver la popularidad de esta pregunta, en comparación con el número de respuestas, abandoné el enfoque fstab. Decidí morder la bala y aprender a usar Automount, abordando el problema del panorama general. Desde mi experiencia fue "la elección correcta". Se puede encontrar una buena introducción a Automount en el wiki de Ubuntu .
Anuncio N

Respuestas:

18

Experimenté exactamente el mismo problema después de actualizar de Oneiric (donde el montaje automático funcionaba bien) a Precise.

Lo que resolvió el problema para mí fue agregar la opción delay_connect . Además, he estado usando la opción "solución = cambiar nombre" ya antes, desde tiempos de Oneiric. No estoy seguro de si todavía se necesita hoy, pero al menos no parece doler.

Mi línea completa / etc / fstab es:

sshfs#user@host:/remote/dir /local/dir fuse delay_connect,idmap=user,uid=1000,gid=1000,umask=0,allow_other,_netdev,workaround=rename 0 0

Obviamente, necesitaría adaptar las ID de usuario / grupo a su propio entorno.

lbo
fuente
1
Funcionó para mí sin solución = cambiar el nombre donde no funcionaba antes. Entonces, mi único cambio fue agregar la opción delay_connect, ¡eso definitivamente ayudó aquí! Gracias por esto. Me pregunto por qué _netdev no es suficiente aquí ...
Nicolas
1
Eso también funciona perfectamente para mí. @Nicolas, creo que el _netdevproblema se explica en la respuesta de Tony. La red puede estar activa, pero aún no puede resolver el host. Obviamente, usar una dirección IP resolvería eso, pero ¿quién quiere direcciones IP en su fstab?
Auspex
Por lo que vale, de alguna manera cuando copio pegado esto en el átomo, recogió caracteres invisibles que lo rompieron. Tuve que eliminar esos
Jonathan
44
Se monta bien, pero luego obtengo: ls / backup: error de entrada / salida
Jonathan
Agregar 'delay_connect, workaround = rename' funcionó para mí en Arch Linux. ¡Gracias!
aSystemOverload
1

También para complementar todos los comentarios anteriores,

  1. Asegúrese de permitir que los usuarios no root especifiquen la allow_otheropción de montaje en/etc/fuse.conf

  2. Asegúrese de usar cada montaje sshfs al menos una vez manualmente mientras está en la raíz para que la firma del host se agregue al ~/.ssh/known_hostsarchivo.

    sshfs [user]@[host]:[remote_path] [local_path] -o allow_other,IdentityFile=[path_to_id_rsa]
    
Martin Brousseau
fuente
La opción de montaje allow_other expone un error de seguridad no resuelto en el kernel de Linux: si la opción de montaje default_permissions NO se usa junto con allow_other, los resultados de la primera verificación de permisos realizada por el sistema de archivos para una entrada de directorio se reutilizarán para accesos posteriores. siempre que el inodo de la entrada accedida esté presente en la memoria caché del núcleo, incluso si los permisos han cambiado desde entonces, e incluso si el acceso posterior lo realiza un usuario diferente.
MountainX para Monica Cellio
0

Tuve el mismo problema, creo que necesita auto para ser noauto. no debería montarse en el arranque, debería montarse cuando el eth está activo

Piet Bijl
fuente
66
Creo que el "montar solo cuando está listo para la red" ya se ha pedido usar _netdev, y cambiarlo noautoharía que no se pudiera montar en el arranque (solo explícitamente cuando se usa el comando de montaje )
Anuncio N
0

Si va a montarlo desde un servidor DNS autorizado /etc/fstaby este servidor DNS proporciona el nombre de host de su servidor SFTP remoto, ciertamente no podrá conectarse porque el nombre de host aún no se puede resolver. O el servidor DNS debe estar ejecutándose mientras intenta montar o debe encontrar un método alternativo para obtener la dirección IP de su servidor remoto.

Si este es el caso, puede elegir cualquiera de las siguientes soluciones:

  • Agregue la delay_connectopción para que permita que la secuencia de inicio continúe y después de que la secuencia de inicio se haya iniciado, el servidor DNS se conectará.
  • Agregue el nombre de host de su servidor SFTP remoto a su /etc/hostsarchivo local con la dirección IP adecuada.
  • Use la dirección IP de su servidor SFTP remoto en fstablugar del nombre del host.
Tony
fuente
¿Puedes ampliar la delay_connectopción? ¿A dónde se agrega? Edite su pregunta para incluir más información al respecto.
AJefferiss
Lo agrega en la lista de opciones de fstab: sshfs # user @ host: / remote / mnt / local fusible delay_connect, uid = 1000, gid = 100, umask = 0, allow_other 0 0
Tony