Aggiornamento 2016-08-03: ho scoperto che l'installazione di SSHFS dal collegamento è più stabile rispetto alla versione homebrew, a causa di alcune vecchie dipendenze ( quindi questo potrebbe migliorare in futuro).
CAVEAT: questa connessione è super veloce quando funziona, ma spesso presenta problemi dopo la connessione terminata, ad es. wireless, standby.
Supponiamo che tu abbia Homebrew installato ( rendi la tua vita più facile e prendi questa prima )
Installazione di SSHFS
brew install sshfs
Controlla questa cartella per vedere i file system installati: ls /Library/Filesystems
Se non vedi osxfusefs.fs
, devi installarlo.
Get Cask
brew tap caskroom/cask
Installa OSXFUSE
brew cask install osxfuse
In alternativa invece di usare homebrew le versioni di download da
link
SSHFS + OSXFUSE ora installato. Un altro passo ...
autofs
ha bisogno di mount_*
binari.
/usr/local/bin/sshfs
dovrebbe essere disponibile anche come mount_sshfs
, quindi:
Elenca il tuo mount_*
s con
compgen -c | grep ^mount
OR
ls /sbin | grep mount
Se non vedi mount_sshfs, devi fare questo passo. Questo è un passaggio fondamentale perché è facilmente dimenticato e potrebbe creare mal di testa.
sudo ln -s $(which sshfs) /sbin/mount_sshfs
Aggiungi avvio automatico a Boot Daemon in /Library/LaunchDaemons/
Il file potrebbe essere chiamato:
Devi eseguire questo ad ogni avvio per l'estensione del kernel:
/bin/bash -c "/Library/Filesystems/osxfusefs.fs/Support/load_osxfusefs; /usr/sbin/sysctl -w osxfuse.tunables.allow_other=1"
Quindi crea un nuovo file di servizio:
/Library/LaunchDaemons/load.osxfusefs.tunables.plist
Contenuto:
<?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/osxfusefs.fs/Support/load_osxfusefs; /usr/sbin/sysctl -w osxfuse.tunables.allow_other=1</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Carica con launchctl
(launchd) per il prossimo avvio, che è la versione per Mac OS X di systemctl
(systemd)
launchctl load /Library/LaunchDaemon/load.osxfusefs.tunables.plist
Imposta auto_master e auto_sshfs
Quanto segue presuppone che tu possa ssh sul tuo server con una chiave sicura (nessuna password richiesta).
/ etc / auto_master
/mnt/sshfs auto_sshfs -nosuid
/ etc / auto_sshfs
Potresti utilizzare i parametri che normalmente vengono dopo il -o
in sshfs -o
a seconda della situazione.
- idmap = utente: impostazione predefinita. dal momento che il tuo uid e il gid sono probabilmente diversi tra i sistemi operativi, puoi semplicemente mappare l'utente utilizzato dall'utente @ ip: al tuo utente locale (client). In questo caso il gruppo verrà ignorato (il che significa che le cartelle che non sono ancora di tua proprietà ti concedono permessi di lettura sul gruppo sul lato server potrebbero non essere leggibili localmente - sul lato client)
o
-
uid = YOURUSERID, gid = YOURGROUPID: digita id YOURUSER per ottenere i numeri. Questo mapperà semplicemente tutti i file dal mount a questa combinazione utente / gruppo. Questo ti permetterà di leggere tutti i file. Penso che ogni nuovo file / cartella che crei erediterà le impostazioni predefinite di umask per qualsiasi cartella tu monti.
-
allow-other: io lo uso, ma è rischioso perché chiunque visiti il mount vedrà il mount usando le credenziali utilizzate durante la connessione.
-
elenca tutti i parametri con man sshfs
e leggi vedi ogni parametro dopo ogni -o
sostituire:
- TUO UTENTE con il tuo nome utente e
- PRIVATEKEY alla tua chiave, ad es. id_ed25519
- ip con il tuo indirizzo IP o nome host
Contenuti
Importante è il parametro reconnect
, altrimenti ogni volta che perdi la connessione (come andare a dormire), il Finder si bloccherà.
Sostituisci
- $ (id -u) con il tuo ID effettivo sul computer client
- $ (id -g) con l'identificativo del gruppo attuale sul computer client
Purtroppo non puoi eseguire cose in autofs come 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
Elenco dei filesystem montati
lsvfs
Elenca tutti i supporti
mount