SMsoft – informatica e dintorni

varie su OSX, GNU/Linux e l'Open Source

OSX: Installare sshfs su Mac per montare una cartella remota via ssh

Per installare una cartella tramite ssh, è necessario avere sshfs installato nel proprio Mac. Per usare correttamente sshfs, è necessario avere installato FUSE (The Filesystem in Userspace) e nel nostro caso utilizzeremo Fuse4X una nuova implementazione di MacFuse.

Vediamo i passi per l’installazione:

1 – scaricare ed installare l’ultima versione di FUSE da http://fuse4x.org/ (al momento (https://github.com/downloads/fuse4x/fuse4x/Fuse4X-0.8.13.dmg)
2 – scaricare e decomprimere https://github.com/downloads/fuse4x/fuse4x/sshfs-2.3.0.zip (controllare se esiste una nuova versione ed usarla). Faciamo tutto da terminale, in modo da inserire i files nel posto corretto:

 bash |  copy code |? 
1
wget https://github.com/downloads/fuse4x/fuse4x/sshfs-2.3.0.zip
2
sudo unzip sshfs-2.3.0.zip -d /

Bene, ora sshfs è installato nel vostro Mac.

Per montare una cartella, basterà digitare:

 bash |  copy code |? 
1
mkdir ~/mountpoint
2
sshfs user@some-host.net:/home/user/ ~/mountpoint -oauto_cache,reconnect,volname=somename,defer_permissions,negative_vncache

dove ~/mountpoint è la cartella per il mount, user@some-host.net è l’utente ed il server a cui fare la connessione e /home/user/ è la cartella remota da montare.

Per smontare il FileSystem, basta digitare:

 bash |  copy code |? 
1
umount ~/mountpoint

Nota: qualora sia necessario disinistallare FUSE4x e sshfs, basterà digitare nel terminale:

 bash |  copy code |? 
1
sudo /System/Library/Filesystems/fuse4x.fs/Contents/Executables/uninstall.sh
2
sudo rm /usr/local/share/man/man1/sshfs.1 /usr/local/bin/sshfs

enjoy!

Linux: Montare una cartella remota con sshfs

Linux mette a disposizione molti sistemi per la connessione a file system remoti. SSHFS (Secure SHell FileSystem) è un filesystem che permette di condividere cartelle in modo sicuro tramite la connessione SSH. Nel PC locale, la risorsa remota verrà montato tramite FUSE (Filesystem in Userspace).

Premessa:
Ipotizziamo il seguente scenario:

  • Sistema Locale: s1.local, IP address: 192.168.0.100
  • Sistema Remoto: s2.local, IP address: 192.168.0.101

Ora vediamo come montare la directory remota /home/backup di s2 nella directory locale di s1 /backup. Tutto questo verrà fatto con l’utente root, anche se con piccole modifiche sarà possibile farlo gestire anche da un utente senza privilegi di root.

Iniziamo:
Innanzitutto bisogna installare sshfs nel Sistema Locale (s1):
apt-get install sshfs

Aggiungiamo l’utente root al gruppo fuse:
adduser root fuse

Creiamo la cartella /backup per montare il file system remoto:
mkdir /backup
chown root /backup

Montiamo il FileSystem remoto /home/backup nella cartella /backup:
sshfs -o idmap=user root@192.168.0.101:/home/backup /backup

Nota: il codice -o idmap=user fa si che nel caso i sistemi abbiamo un differente user ID non ci siano problemi di permessi.

Dopo aver eseguito il precedente comando, verrà richiesta la password dell’utente root su s2 ed eventualmente di accettarne la chiave pubblica.

Digitanto ora “mount” si potrà verificare che la cartella remota sia stata montata:
mount
...
...
/dev/sda1 on /boot type ext2 (rw)
root@192.168.0.101:/home/backup on /backup type fuse.sshfs (rw,nosuid,nodev,max_read=65536)

Ora, per smontare la cartella, basterà eseguire:
fusermount -u /backup

Montaggio automatico all’avvio

Nel caso sia necessario montare il FileSystem remoto all’avvio, bisognerà caricare la chiave pubblica di s1 su s2 in modo che non venga più richiesta la password durante la connessione ssh.

Se non avete mai creato una chiave pubblica/privata su s1, basterà digitare su s1:
ssh-keygen
e premere invio quando richiesto. Questo creerà la chiave pubblica in /root/.ssh/id_rsa.pub

Per copiare la chiave pubblica in s2, bisognerà digitare:
ssh-copy-id -i $HOME/.ssh/id_rsa.pub root@192.168.0.101

Per controllare che funzioni tutto correttamente, basterà effettuare un ssh verso s2 e verificare che non venga richiesta la password:
ssh root@192.168.0.101

Nota: solo come promemoria, ricordo che la chiave pubblica, con il comando ssh-copy-id viene copiata in $HOME/.ssh/authorized_keys di s2.

Benissimo, ci siamo quasi. Ora aggiungiamo al file /etc/rc.local le istruzioni per il montaggio del File System remoto, che verrà automaticamente effettuato al riavvio del sistema. Bisognerà inserire nel file /etc/rc.local, prima di un eventuale exit, la riga:
/usr/bin/sshfs -o idmap=user root@192.168.0.101:/home/backup /backup

Ora basterà riavviare e verificare che il FileSystem sia stato correttamente montato.

enjoy!

Evitare la creazione di file .DS_Store su FileSystem remoti montati con sshfs

Come saprete, OSX crea files .DS_Store contenenti informazioni di sistema. Questo avviene anche sui File System remoti montati con sshfs. Ci sono due sistemi per evitare che questo accada:
1 – aggiungere l’opzione noappledouble durante il montaggio, es:
sshfs user@some-host.net:/home/user/ ~/mountpoint -onoappledouble,auto_cache,reconnect,volname=somename,defer_permissions,negative_vncache
2 – configurare OSX in modo che non scriva il file .DS_Store nei FileSystem di rete, digitando nel terminale:
defaults write com.apple.desktopservices DSDontWriteNetworkStores true
che provvede ad inserire tale settaggio nel file ~/Library/Preferences/com.apple.desktopservices.plist

enjoy!

Page optimized by WP Minify WordPress Plugin