Sshfs (Italiano) - ArchWiki

# Sshfs (Italiano)

Sshfs può essere usato per effettuare il mount di file system remoti - accessibili tramite SSH - in una cartella locale, permettendo quindi di poter effettuare qualsiasi operazione sui file con qualsiasi strumento(copiare, rinominare, modificare con vim eccetera.). L'uso di sshfs invece di shfs è consigliato comunemente, in quanto shfs non ha avuto nuove versioni dal 2004.

## Installazione

Installare il pacchetto sshfs. Questo pacchetto ha come sua dipendenza fuse e ne richiederà l'installazione (se non è già stato installato).

## Uso

Per prima cosa il modulo necessario al corretto funzionamento dovrebbe essere caricato (come utente root):

    # modprobe fuse

(Sarà possibile inserire `fuse` nell'array `MODULES` all'interno del file `/etc/rc.conf` per farlo caricare automaticamente all'avvio.)

### Effettuare il mount

Si dovrà utilizzare il comando `sshfs`. Per effettuare il mount di una cartella remota:

    # sshfs NOMEUTENTE@NOMEMACCHINA_O_INDIRIZZOIP:/PERCORSO PUNTO_DI_MOUNT_LOCALE OPZIONI_SSH

Ad esempio:

    # sshfs sessy@mycomputer:/home/sessy /mnt/sessy -C -p 9876

Dove 9876 è il numero della porta.

Inoltre, assicurarsi prima di connettersi, di aver impostato i giusti permessi sui file, per le cartelle locali dove si vuole effettuare il mount di una cartella remota. Esempio: non lasciare che l'unico proprietario sia root! Sarà possibile utilizzare il comando di mount anche come utente normale, dovrebbe funzionare correttamente.

SSH richiederà la password, se necessaria. Se non si vuole inserire ogni volta la password, consultare; Come usare l'autenticazione con una chiave RSA via SSH (in inglese), oppure usare le chiavi SSH.

### Effettuare l'umount

Per effettuare l'umount delle cartelle remote:

    # fusermount -u PUNTO_DI_MOUNT_LOCALE

Esempio:

    # fusermount -u /mnt/sessy

## Tips

Per effettuare un mount rapido di una cartella remota, effettuare alcune operazioni sui file ed effettuare l'umount successivamente, inserire i seguenti comandi in uno script:

    sshfs NOMEUTENTE@NOMEMACCHINA_O_INDIRIZZOIP:/PERCORSO PUNTO_DI_MOUNT_LOCALE OPZIONI_SSH
    mc ~ PUNTO_DI_MOUNT_LOCALE
    fusermount -u LOCAL_MOUNT_POINT

Questi comandi effettueranno il mount della cartella remota, eseguiranno MC ed infine smonteranno la cartella dopo l'uscita dal file-manager.

Thunar ha un problema con FAM e gli accessi a file remoti. Se le cartelle remote non vengono visualizzate, e si viene portati alla cartella `home`, oppure si hanno altri problemi di accesso a file remoti, sostituire famAUR[broken link: archived in aur-mirror] con gamin. Gamin è derivato da FAM. Installare quindi gamin e rimuovere dal caricamento automatico il demone `fam`.

## Chroot

Potrebbe essere necessario abbinare un utente(specifico) ad una cartella. Per effettuare questo, modificare il file `/etc/ssh/sshd_config`:

    /etc/ssh/sshd_config

    .....
    Match User nomeutente
           ChrootDirectory /chroot/%u
           ForceCommand internal-sftp #per limitare l'utente all'uso di sftp
           AllowTcpForwarding no
           X11Forwarding no
    .....

Nota: La cartella di chroot deve essere posseduta da root, altrimenti non sarà possibile connettersi. Per maggiori informazioni consultare le pagine di manuale relative a `Match, ChrootDirectrory` e `ForceCommand`.

## Risoluzione dei problemi

### Connection reset by peer

- Se si sta tentando di accedere ad un sistema remoto tramite il nome macchina, provare utilizzando l'indirizzo IP, potrebbe essere un problema di risoluzione dei nomi. Assicurarsi di modificare il file `/etc/hosts` aggiungendo l'indirizzo ed il nome del server.
- Se si stanno utilizzando chiavi con nomi non standard, passare l'opzione con `-i .ssh/my_key`, non funziona. Sarà necessario usare `-o IdentityFile=/home/user/.ssh/my_key`, specificando il percorso assoluto della chiave.
- Aggiungere l'opzione '`sshfs_debug`' (ad esempio '`sshfs -o sshfs_debug user@server ...`') può aiutare ad avere maggiori informazioni per risolvere il problema.
- Se si utilizza sshfs in una rete gestita da un router che esegue DD-WRT o simile, la soluzione può essere trovata quì.
- Discussione sul forum internazionale: sshfs: Connection reset by peer

Nota: Quando vengono passate diverse opzioni per sshfs, devono essere separate da una virgola. In questo modo: '`sshfs -o sshfs_debug,IdentityFile=</path/to/key> user@server ...`')

### Remote host has disconnected

- Se si riceve questo messaggio direttamente appena si tenta di utilizzare sshfs, provare a controllare il percorso del `Sybsystem` elencato nel file `/etc/ssh/sshd_config` sulla macchina remota, e controllare che sia corretto.
- Sarà possibile constrollare digitando `find / grep XXXX` dove XXXX è il percorso del subsystem.

## fstab

Un esempio di come usare sshfs per montare un filesystem remoto tramite `/etc/fstab`

    sshfs#NOMEUTENTE@NOMEMACCHINA_O_INDIRIZZOIP:/CARTELLA/REMOTA /PUNTO_DI_MOUNT/LOCALE fuse defaults 0 0

Ecco come potrebbe risultare la voce in fstab

    sshfs#llib@192.168.1.200:/home/llib/FAH /media/FAH2 fuse defaults 0 0

Comunque questo non funzionerà automaticamente se non si utilizza una chiave ssh per l'utente. SSH Keys.

Se si vuole usare sshfs per diversi utenti:

    sshfs#user@domain.org:/home/user  /media/user   fuse    defaults,allow_other    0  0

Nota: Con il precedente metodo, l'umount non verrà effettuato perché il filesystem non si trova in `fstab`. Per evitare questo errore, rimuovere il prefisso '`sshfs#`', cambiare il filesystem da '`fuse`' a '`fuse.sshfs`', quindi creare uno script chiamato '`sbin/mount.fuse.sshfs`':

    /sbin/mount.fuse.sshfs

    #!/bin/bash
    DEVICE="$1"
    MOUNTPOINT="$2"
    OPTIONS="$4"

    OPTIONS="${OPTIONS/,noauto/}"
    OPTIONS="${OPTIONS/,user/}"

    # workaround per evitare il conflitto dell'opzione 'user'
    # in fstab, specificare 'login=joe' invece di 'user=joe'
    OPTIONS="${OPTIONS/,login=/,user=}"

    exec /usr/bin/sshfs "$DEVICE" "$MOUNTPOINT" -o "$OPTIONS"

Se si ottiene l'errore "connection reset by peer" usando il metodo di fstab, è probabile che il pc non sia connesso ad internet durante quella fase dell'avvio. La soluzione consiste nell'aggiungere alle applicazioni di avvio del proprio DE/WM il comando di mount tramite sshfs. A questo punto dell'avvio la connessione dovrebbe essere stata stabilita.

## Opzioni

sshfs può convertire automaticamente l'id dell'utente locale e remoto, se si aggiunge l'opzione `idmap`:

    # sshfs -o idmap=user sessy@mycomputer:/home/sessy /mnt/sessy -C -p 9876

Se per il server remoto si utilizza un nome utente diverso da quello in uso, può funzionare se viene utilizzata l'opzione ssh `User`:

    # sshfs -o idmap=user,User=sessy2 sessy@mycomputer:/home/sessy /mnt/sessy -C -p 9876

(La prima forma è stata testata, la seconda è basata sulla documentazione, quindi potrebbe risultare leggermente differente.)

## Link correlati

- SSH
- How to: effettuare il mount di filesystem in chroot tramite SSH(in inglese), con maggiori approfondimenti riguardo ai proprietari ed alle opzioni dei permessi.

Category:

- Secure Shell (Italiano)

Hidden category:

- Pages with broken package links