SSHFS: montare una risorsa remota sfruttando FUSE ed SSH: differenze tra le versioni
S3v (discussione | contributi) Nessun oggetto della modifica |
|||
Riga 1: | Riga 1: | ||
=Introduzione= | =Introduzione= | ||
Spesso può essere necessario lavorare direttamente su un filesystem remoto (si pensi, ad esempio, alla webroot di un sito | Spesso può essere necessario lavorare direttamente su un filesystem remoto (si pensi, ad esempio, alla webroot di un sito o alla home del proprio portatile). | ||
'''< | '''<code>Sshfs</code>''' permette di superare questo problema in un modo semplice e pulito: montando una directory mediante [http://fuse.sourceforge.net/ FUSE], usando il protocollo [[SSH]]. | ||
=Installazione= | =Installazione= | ||
Il pacchetto sshfs e le utility per gestire FUSE son già presenti in Debian, quindi l'installazione si riduce ad un semplice | Il pacchetto sshfs e le utility per gestire FUSE son già presenti in Debian, quindi l'installazione si riduce ad un semplice: | ||
<pre> | <pre> | ||
# apt-get install sshfs fuse-utils | # apt-get install sshfs fuse-utils | ||
</pre> | </pre> | ||
Per quanto riguarda il kernel, normalmente è presente il modulo ''fuse''. Se non è presente è necessaria la ricompilazione del kernel. | Per quanto riguarda il kernel, normalmente è presente il modulo ''fuse''. Se non è presente è necessaria la ricompilazione del kernel. | ||
Il modulo da attivare si trova in: ''File systems ---> Filesystem in Userspace support'' | Il modulo da attivare si trova in: ''File systems ---> Filesystem in Userspace support''. | ||
=Configurazione= | =Configurazione= | ||
Riga 42: | Riga 42: | ||
</pre> | </pre> | ||
dove | dove | ||
; user : è l'utente della | ; user : è l'utente della macchina remota (se omesso verrà utilizzato l'username dell'utente che lancia il comando (root, in questo caso) | ||
; host : è l'indirizzo | ; host : è l'indirizzo IP o l'URL a cui la macchina remota risponde | ||
; /dir/to/mount : è il percorso assoluto della directory da montare | ; /dir/to/mount : è il percorso assoluto della directory da montare, (è possibile anche utilizzare un percorso relativo a partire dalla directory home dell'utente: ''./path/to/dir'') | ||
; /mnt/sshdir : rappresenta il punto di mount | ; /mnt/sshdir : rappresenta il punto di mount | ||
per controllare la riuscita del comando, si può analizzare l'output del comando <pre> | per controllare la riuscita del comando, si può analizzare l'output del comando: <pre> | ||
$ mount | $ mount | ||
</pre> | </pre> | ||
Riga 73: | Riga 73: | ||
==fusermount: mount failed: Invalid argument== | ==fusermount: mount failed: Invalid argument== | ||
È possibile che la versione dei pacchetti fuse-utils, libfuse2, sshfs-fuse non sia sufficientemente aggiornata rispetto alla versione del kernel in uso. | |||
Si legga in particolare la discussione apparsa su queste pagine nel forum [[http://www.debianizzati.org/index.php?option=com_joomlaboard&Itemid=29&func=view&id=21673&catid=19#21673]]: | Si legga in particolare la discussione apparsa su queste pagine nel forum [[http://www.debianizzati.org/index.php?option=com_joomlaboard&Itemid=29&func=view&id=21673&catid=19#21673]]: | ||
la soluzione prospettata | la soluzione prospettata è quella di sostituire e aggiornare i pacchetti a tutt'oggi disponibili (per la sarge: fuse-utils 2.2.1-4, libfuse2 2.2.1-4, sshfs 1.1-1 ) con le versioni a disposizione su [http://www.backports.org/ http://www.backports.org/] (fuse-utils 2.5.3-1bpo1, libfuse2 2.5.3-1bpo1, sshfs_1.6-0bpo1) seguendo le relative [http://www.backports.org/dokuwiki/doku.php?id=instructions istruzioni]. |
Versione delle 14:27, 24 gen 2010
Introduzione
Spesso può essere necessario lavorare direttamente su un filesystem remoto (si pensi, ad esempio, alla webroot di un sito o alla home del proprio portatile).
Sshfs
permette di superare questo problema in un modo semplice e pulito: montando una directory mediante FUSE, usando il protocollo SSH.
Installazione
Il pacchetto sshfs e le utility per gestire FUSE son già presenti in Debian, quindi l'installazione si riduce ad un semplice:
# apt-get install sshfs fuse-utils
Per quanto riguarda il kernel, normalmente è presente il modulo fuse. Se non è presente è necessaria la ricompilazione del kernel.
Il modulo da attivare si trova in: File systems ---> Filesystem in Userspace support.
Configurazione
Creazione del punto di mount
Prima di tutto è necessario creare un punto di montaggio in cui montare la risorsa di rete (ovviamente ognuno è liberissimo di utilizzare la directory che vuole):
# mkdir /mnt/sshdir
è necessario, inoltre, impostare l'utente che utilizzerà questa directory come owner:
# chown username /mnt/sshdir
Permessi utenti
È possibile permettere l'utilizzo di sshfs anche agli utenti normali, seguendo i seguenti passaggi:
# chgrp fuse /usr/bin/fusermount # chmod u+s /usr/bin/fusermount # adduser nomeutente fuse
in questo modo permettiamo l'utilizzo del comando fusermount agli utenti appartenenti al gruppo fuse, e aggiungiamo l'utente che utilizzerà sshfs al gruppo fuse.
Per rendere effettiva l'aggiunta al gruppo è necessario effettuare un logout-login.
Utilizzo e Test
L'utilizzo è semplice:
$ sshfs user@host:/dir/to/mount /mnt/sshdir
dove
- user
- è l'utente della macchina remota (se omesso verrà utilizzato l'username dell'utente che lancia il comando (root, in questo caso)
- host
- è l'indirizzo IP o l'URL a cui la macchina remota risponde
- /dir/to/mount
- è il percorso assoluto della directory da montare, (è possibile anche utilizzare un percorso relativo a partire dalla directory home dell'utente: ./path/to/dir)
- /mnt/sshdir
- rappresenta il punto di mount
per controllare la riuscita del comando, si può analizzare l'output del comando:
$ mount
Per quanto riguarda lo smontaggio (umounting) il comando è il seguente:
$ fusermount -u /mnt/sshdir
Faq ed Errori Frequenti
failed to open /dev/fuse: No such file or directory
L'errore è dovuto alla mancanza del modulo del kernel relativo a fusefs. È necessario compilarlo come modulo o staticamente (nei kernel pacchettizzati Debian è presente, ed è caricabile con un
# modprobe fuse
mountpoint is not empty
Se si cerca di montare una risorsa in un mountpoint contenente già dei file, può apparire il seguente errore:
fusermount: mountpoint is not empty fusermount: if you are sure this is safe, use the 'nonempty' mount option
Le soluzioni sono:
- usare un mountpoint libero (consigliata)
- appendere, dopo il comando sshfs l'opzione -o nonempty
fusermount: mount failed: Invalid argument
È possibile che la versione dei pacchetti fuse-utils, libfuse2, sshfs-fuse non sia sufficientemente aggiornata rispetto alla versione del kernel in uso. Si legga in particolare la discussione apparsa su queste pagine nel forum [[1]]: la soluzione prospettata è quella di sostituire e aggiornare i pacchetti a tutt'oggi disponibili (per la sarge: fuse-utils 2.2.1-4, libfuse2 2.2.1-4, sshfs 1.1-1 ) con le versioni a disposizione su http://www.backports.org/ (fuse-utils 2.5.3-1bpo1, libfuse2 2.5.3-1bpo1, sshfs_1.6-0bpo1) seguendo le relative istruzioni.