12 votos

Cómo conseguir automount y sshfs (osxfuse) trabajando con yosemite

Actualmente estoy intentando hacer funcionar el automount de Apple con osxfuse y sshfs. El resultado debe ser que una carpeta especificada se monta automáticamente si se utiliza.

Lo que he hecho hasta ahora:

  • instalado osxfuse y sshfs de los paquetes oficiales (las versiones son osxfuse: 2.7.3 / sshfs 2.5.0)

  • creado un enlace simbólico /sbin/mount_sshfs -> /usr/local/bin/sshfs

  • añade la siguiente línea de configuración a /etc/auto_master : /- auto_ssh -nosuid

  • creado el archivo de configuración /etc/auto_ssh:

    /mnt -fstype=sshfs,sshfs_debug,allow_other,idmap=user,follow_symlinks,max_read=65536,rw,nodev,cache=no,IdentityFile=/Users/myUsername/.ssh/sshfs remoteUser@remoteHost:/path/to/folder
  • después recargar automount mediante : sudo automount -cv

Si ahora intento cd en mnt Me aparece el siguiente error:

bash: cd: /mnt: Operation not permitted

La consola contiene lo siguiente:

04/12/14 01:27:50,418 automountd[1965]: MOUNT  REQUEST: name=/mnt [] map=auto_ssh opts=nosuid path=/mnt direct=1
04/12/14 01:27:50,631 KernelEventAgent[69]: tid 54485244 received event(s) VQ_DEAD (32)
04/12/14 01:27:50,632 automountd[1965]: MOUNT  REPLY  : status=1, AUTOFS_DONE
04/12/14 01:27:50,632 automountd[1965]: mount of /mnt failed: Operation not permitted

¿Alguien tiene alguna idea de cómo hacer que esto funcione, o qué probar a continuación?

3voto

Chris Warth Puntos 1

FWIW, si alguien más tropieza con esta vieja pregunta, la mejor guía que he encontrado para montar sshfs usando automounter de apple está aquí -

http://virtuallyhyper.com/2013/07/mount-various-file-system-with-autofs-on-mac-os-x-mountain-lion/#mount-sshfs-with-autofs

3voto

nablex Puntos 116

Esto no requiere desactivar la Protección de Integridad del Sistema, ya que los trabajos cron siguen funcionando en el captain:

$ crontab -e

*/5 * * * *  /usr/local/bin/sshfs 192.168.1.2:/etc /Users/xxx/temp/etc -o uid=$(id -u) -o gid=$(id -g) -o reconnect

3voto

Carlos D. Álvaro Puntos 141

Para MacOS Mojave y la última versión de osxfuse, este es el archivo daemon correcto:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Disabled</key>
    <false/>
    <key>Label</key>
    <string>sysctl</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/bash</string>
        <string>-c</string>
        <string>/Library/Filesystems/osxfuse.fs/Contents/Resources/load_osxfuse; /usr/sbin/sysctl -w vfs.generic.osxfuse.tunables.allow_other=1</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

load_osxfuse se encuentra ahora en /Library/Filesystems/osxfuse.fs/Contents/Resources/load_osxfuse y el parámetro correcto del núcleo es vfs.generic.osxfuse.tunables.allow_other

Más información en osxfuse wiki

2voto

macmadness86 Puntos 106

Actualización 2016-08-03: He descubierto que la instalación de SSHFS de https://osxfuse.github.io es más estable que la versión homebrew, debido a alguna dependencia antigua (por lo tanto esto puede mejorar en el futuro).

AVISO: Esta conexión es super rápida cuando funciona, pero a menudo tiene problemas después de terminada se conecta debido, por ejemplo, inalámbrica, en espera.


Se supone que tiene Elaboración casera instalado ( hazte la vida más fácil y consigue esto primero )

Instalación de SSHFS

brew install sshfs

Compruebe esta carpeta para ver los sistemas de archivos instalados: ls /Library/Filesystems Si no ve osxfusefs.fs es necesario instalarlo.

Obtener barrica

brew tap caskroom/cask

Instalar OSXFUSE

brew cask install osxfuse

Alternativamente en lugar de homebrew utilizar las versiones de descarga de https://osxfuse.github.io/

SSHFS + OSXFUSE ya instalados. Un paso más...

autofs necesita mount_* binarios.

/usr/local/bin/sshfs también debería estar disponible como mount_sshfs así que..:

Enumere su mount_* s con

compgen -c | grep ^mount

O

ls /sbin | grep mount 

Si no ves mount_sshfs, entonces necesitas hacer este paso. Se trata de un paso fundamental porque se olvida fácilmente y puede crear quebraderos de cabeza. En /sbin está en la partición del sistema tendrá que desactivar SIP y volver a montar la partición con el atributo de escritura .

En Modo Recuperación abra Terminal y desactive SIP y reinicie:

csrutil disable
reboot

Una vez reiniciado, vuelva a montar el volumen del sistema:

sudo mount -uw /

Ahora puede crear el enlace simbólico adecuado:

sudo ln -s $(which sshfs) /sbin/mount_sshfs

Añadir Autostart en Boot Daemon en /Library/LaunchDaemons/

Se podría llamar archivo:

Necesita ejecutar esto en cada arranque para la extensión del kernel:

/bin/bash -c "/Library/Filesystems/osxfuse.fs/Contents/Resources/load_osxfuse; /usr/sbin/sysctl -w vfs.generic.osxfuse.tunables.allow_other=1"

Así que crea un nuevo archivo de servicio:

/Library/LaunchDaemons/load.osxfusefs.tunables.plist

Contenido:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Disabled</key>
    <false/>
    <key>Label</key>
    <string>sysctl</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/bash</string>
        <string>-c</string>
        <string>/Library/Filesystems/osxfuse.fs/Contents/Resources/load_osxfuse; /usr/sbin/sysctl -w vfs.generic.osxfuse.tunables.allow_other=1</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

Cargar con launchctl (launchd) para el siguiente arranque, que es la versión para Mac OS X de systemctl (systemd)

launchctl load /Library/LaunchDaemons/load.osxfusefs.tunables.plist

Configurar auto_master y auto_sshfs

Lo siguiente asume que usted puede ssh en su servidor con una clave segura (no requiere contraseña).

/etc/auto_master

/mnt/sshfs                auto_sshfs       -nosuid

/etc/auto_sshfs Puede utilizar parámetros que normalmente vienen después de -o en sshfs -o dependiendo de su situación.

  • idmap=user: configuración por defecto. dado que su uid y gid es probablemente diferente a través de los sistemas operativos, usted podría simplemente asignar el usuario utilizado en el user@ip: a su usuario local (cliente). El grupo será ignorado en este caso (lo que significa que las carpetas que no son de su propiedad pero que le otorgan permisos de lectura en el grupo del lado del servidor pueden no ser legibles localmente - en el lado del cliente).

O

  • uid=YOURUSERID, gid=YOURGROUPID: escriba id YOURUSER para obtener los números. Esto asignará todos los archivos del montaje a esta combinación de usuario/grupo. Esto le permitirá leer todos los archivos. Creo que cualquier nuevo archivo/carpeta que crees heredará la configuración umask por defecto para cualquier carpeta que montes.

  • permitir-otro: Yo uso esto, pero es arriesgado porque cualquier usuario que navegue por el montaje verá el montaje usando las credenciales usadas al conectarse.

  • lista todos los parámetros con man sshfs y leer ver cada parámetro después de cada -o

reemplazar:

  • YOURUSER con su nombre de usuario y
  • PRIVATEKEY a su clave, por ejemplo id_ed25519
  • ip con su dirección ip o nombre de host

Contenido Importante es el parámetro reconnect De lo contrario, si pierdes la conexión (por ejemplo, si te vas a dormir), Finder se bloqueará.

Sustituir

  • $(id -u) con su id real en la máquina cliente
  • $(id -g) con su id de grupo real en la máquina cliente

Lamentablemente no se pueden ejecutar cosas en autofs como id -u

NameOfMountThatGetsIgnored -fstype=sshfs,port=22,reconnect,uid=$(id -u),gid=$(id -g),follow_symlinks,allow_other,IdentityFile=/Users/YOURUSER/.ssh/PRIVATEKEY,volname="NameOfMount"     YOURUSER@ip:/path/on/server

Prueba

df -Ph /path/to/mount

Lista de sistemas de archivos montados

lsvfs

Lista de todos los montajes

mount

0voto

Deecee Puntos 39

He revisado todas las guías de automount que he podido encontrar y he completado con éxito los pasos de esta respuesta pero al final se me colgó el Finder y no pude desmontar vía Terminal.

Por eso me gustaría mencionar una opción alternativa, menos intrusiva: Carpeta Acciones .

En el pasado no eran fiables, por lo que su kilometraje puede variar, pero para mí (en Catalina) que funcionan de forma fiable hasta ahora (1 día en).

  1. Abrir script Editor.

  2. Crea un script con el siguiente contenido:

    on opening folder this_folder do shell script "/usr/local/bin/sshfs user@ipaddress:remote_path ~/mnt/volume_name -o volname=desired_volume_name" end opening folder

  3. Compila este script en el Editor script (usando el comando

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X