Mise à jour 2016-08-03 : J'ai constaté que l'installation de SSHFS à partir de https://osxfuse.github.io est plus stable que la version homebrew, à cause de quelques anciennes dépendances (donc cela peut s'améliorer dans le futur).
AVERTISSEMENT : Cette connexion est super rapide lorsqu'elle fonctionne, mais présente souvent des problèmes après la fin de la connexion en raison, par exemple, du sans fil, de la mise en veille.
On suppose que vous avez Homebrew installé ( facilitez-vous la vie et obtenez ce premier )
Installation de SSHFS
brew install sshfs
Vérifiez ce dossier pour voir les systèmes de fichiers installés : ls /Library/Filesystems
Si vous ne voyez pas osxfusefs.fs
vous devez l'installer.
Obtenir le Cask
brew tap caskroom/cask
Installer OSXFUSE
brew cask install osxfuse
Alternativement, au lieu de homebrew, utilisez les versions téléchargées à partir de https://osxfuse.github.io/
SSHFS + OSXFUSE maintenant installés. Encore une étape...
autofs
besoins mount_*
binaires.
/usr/local/bin/sshfs
devrait également être disponible en tant que mount_sshfs
donc :
Dressez la liste de vos mount_*
s avec
compgen -c | grep ^mount
OU
ls /sbin | grep mount
Si vous ne voyez pas mount_sshfs, vous devez effectuer cette étape. Il s'agit d'une étape cruciale car elle est facilement oubliée et peut créer des maux de tête. Comme /sbin
se trouve sur la partition système, vous devrez désactiver le SIP et remonter la partition avec l'attribut inscriptible .
En mode de récupération, ouvrez le terminal, désactivez SIP et redémarrez :
csrutil disable
reboot
Une fois redémarré, remontez le volume système :
sudo mount -uw /
Maintenant vous pouvez créer le lien symbolique approprié :
sudo ln -s $(which sshfs) /sbin/mount_sshfs
Ajouter Autostart at Boot Daemon dans la rubrique /Library/LaunchDaemons/
Le dossier pourrait être appelé :
Vous devez l'exécuter à chaque démarrage pour l'extension du noyau :
/bin/bash -c "/Library/Filesystems/osxfuse.fs/Contents/Resources/load_osxfuse; /usr/sbin/sysctl -w vfs.generic.osxfuse.tunables.allow_other=1"
Créez donc un nouveau fichier de service :
/Library/LaunchDaemons/load.osxfusefs.tunables.plist
Contenu :
<?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>
Chargement avec launchctl
(launchd) pour le prochain démarrage, qui est la version Mac OS X de systemctl
(systemd)
launchctl load /Library/LaunchDaemons/load.osxfusefs.tunables.plist
Configurer auto_master et auto_sshfs
Ce qui suit suppose que vous pouvez vous connecter à votre serveur avec une clé sécurisée (pas de mot de passe requis).
/etc/auto_master
/mnt/sshfs auto_sshfs -nosuid
/etc/auto_sshfs Vous pouvez utiliser les paramètres qui viennent normalement après le -o
sur sshfs -o
en fonction de votre situation.
- idmap=user : paramètre par défaut. Comme vos uid et gid sont probablement différents d'un système d'exploitation à l'autre, vous pouvez simplement faire correspondre l'utilisateur utilisé dans le user@ip : à votre utilisateur local (client). Le groupe sera ignoré dans ce cas (ce qui signifie que les dossiers dont vous n'êtes pas propriétaire mais qui vous accordent des droits de lecture sur le groupe côté serveur peuvent ne pas être lisibles localement - côté client).
OU
-
uid=YOURUSERID, gid=YOURGROUPID : tapez simplement id YOURUSERID pour obtenir les chiffres. Cela va juste affecter tous les fichiers du montage à cette combinaison utilisateur/groupe. Cela vous permettra de lire tous les fichiers. Je pense que tous les nouveaux fichiers/dossiers que vous créez hériteront des paramètres umask par défaut pour le dossier que vous montez.
-
allow-other : Je l'utilise, mais c'est risqué car tout utilisateur qui navigue sur le montage verra le montage en utilisant les informations d'identification utilisées lors de la connexion.
-
liste tous les paramètres avec man sshfs
et lire voir chaque paramètre après chaque -o
remplacer :
- YOURUSER avec votre nom d'utilisateur et
- PRIVATEKEY à votre clé, par exemple id_ed25519
- ip avec votre adresse IP ou votre nom d'hôte
Contenu Le paramètre important est le suivant reconnect
sinon, dès que vous perdrez la connexion (par exemple en vous endormant), le Finder se plantera.
Remplacer
- $(id -u) avec votre identifiant réel sur la machine cliente
- $(id -g) avec votre id de groupe réel sur la machine cliente
Malheureusement, vous ne pouvez pas exécuter des choses dans autofs comme 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
Test
df -Ph /path/to/mount
Liste des systèmes de fichiers montés
lsvfs
Lister toutes les montures
mount