Difference between revisions of "Sshfs (Italiano)"

From ArchWiki
Jump to: navigation, search
m (added category Secure Shell (Italiano))
(wikify some external links, use https for archlinux.org)
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:Networking (Italiano)]]
 
 
[[Category:Secure Shell (Italiano)]]
 
[[Category:Secure Shell (Italiano)]]
{{i18n|Sshfs}}
+
[[en:Sshfs]]
 
+
Sshfs può essere usato per effettuare il mount di file system remoti - accessibili tramite [[SSH (Italiano)|SSH]] - in una cartella locale, permettendo quindi di poter effettuare qualsiasi operazione sui file con qualsiasi strumento(copiare, rinominare, modificare con [[Vim (Italiano)|vim]] eccetera.). L'uso di sshfs invece di shfs è consigliato comunemente, in quanto shfs non ha avuto nuove versioni dal 2004.
Sshfs può essere usato per effettuare il mount di file system remoti - accessibili tramite [[SSH (Italiano)|SSH]] - in una cartella locale, permettendo quindi di poter effettuare qualsiasi operazione sui file con qualsiasi strumento(copiare, rinominare, modificare con [[Vim (Italiano)|vim]] eccetera.). l'Uso di sshfs invece di shfs è consigliato comunemente, in quanto shfs non ha avuto nuove versioni dal 2004.
+
  
 
== Installazione ==
 
== Installazione ==
Per installare il pacchetto necessario digitare:
+
[[Pacman (Italiano)|Installare]] il pacchetto {{Pkg|sshfs}}. Questo pacchetto ha come sua dipendenza {{Pkg|fuse}} e ne richiederà l'installazione (se non è già stato installato).
# pacman -S sshfs
+
Questo comando dovrebbe installare {{Package Official|fuse}}(se non è gia stato installato) e {{Package Official|sshfs}}, ed eventuali dipendenze.
+
  
 
== Uso ==
 
== Uso ==
Per prima cosa il modulo necessario al corretto funzionamento dovrebbe essere caricato(come utente ''root''):
+
Per prima cosa il modulo necessario al corretto funzionamento dovrebbe essere caricato (come utente ''root''):
  
 
  # modprobe fuse
 
  # modprobe fuse
(Sarà possibile inserire {{Codeline|fuse}} nell'array {{Codeline|MODULES}} all'interno del file {{Filename|/etc/[[rc.conf (Italiano)|rc.conf]]}} per farlo caricare automaticamente all'avvio.)
+
(Sarà possibile inserire {{ic|fuse}} nell'array {{ic|MODULES}} all'interno del file {{ic|/etc/[[rc.conf (Italiano)|rc.conf]]}} per farlo caricare automaticamente all'avvio.)
  
 
=== Effettuare il mount ===
 
=== Effettuare il mount ===
Si dovrà utilizzare il comando {{Codeline|sshfs}}. Per effettuare il mount di una cartella remota:
+
Si dovrà utilizzare il comando {{ic|sshfs}}. Per effettuare il mount di una cartella remota:
 
  ''# sshfs NOMEUTENTE@NOMEMACCHINA_O_INDIRIZZOIP:/PERCORSO PUNTO_DI_MOUNT_LOCALE OPZIONI_SSH''
 
  ''# sshfs NOMEUTENTE@NOMEMACCHINA_O_INDIRIZZOIP:/PERCORSO PUNTO_DI_MOUNT_LOCALE OPZIONI_SSH''
 
Ad esempio:
 
Ad esempio:
Line 23: Line 19:
 
Dove 9876 è il numero della porta.
 
Dove 9876 è il numero della porta.
  
Inoltre, assicurarsi prima di connettersi, di aver impostato i guisti 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 fuznionare correttamente.
+
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 (Italiano)|SSH]] richiederà la password, se necessaria. Se non si vuole inserire ogni volta la password, consultare; [http://linuxmafia.com/~karsten/Linux/FAQs/sshrsakey.html Come usare l'autenticazione con una chiave RSA via SSH (in inglese)], oppure [[Using SSH Keys (Italiano)|Usare le chiavi SSH]].
+
[[SSH (Italiano)|SSH]] richiederà la password, se necessaria. Se non si vuole inserire ogni volta la password, consultare; [http://linuxmafia.com/~karsten/Linux/FAQs/sshrsakey.html Come usare l'autenticazione con una chiave RSA via SSH (in inglese)], oppure [[SSH Keys (Italiano)|usare le chiavi SSH]].
  
 
=== Effettuare l'umount ===
 
=== Effettuare l'umount ===
Line 41: Line 37:
 
Questi comandi effettueranno il mount della cartella remota, eseguiranno MC ed infine smonteranno la cartella dopo l'uscita dal file-manager.
 
Questi comandi effettueranno il mount della cartella remota, eseguiranno MC ed infine smonteranno la cartella dopo l'uscita dal file-manager.
  
Thunar ha un porblema con [[FAM (Italiano)|FAM]] e gli accessi a file remoti. Se le cartelle remote non vengono visualizzate, e si viene portati alla catella {{Filename|home}}, oppure si hanno altri problemi di accesso a file remoti, sostituire {{Package Official|fam}} con {{Package Official|gamin}}. Gamin è derivato da FAM.
+
Thunar ha un problema con [[FAM (Italiano)|FAM]] e gli accessi a file remoti. Se le cartelle remote non vengono visualizzate, e si viene portati alla cartella {{ic|home}}, oppure si hanno altri problemi di accesso a file remoti, sostituire {{Pkg|fam}} con {{Pkg|gamin}}. Gamin è derivato da FAM. Installare quindi {{Pkg|gamin}} e rimuovere dal caricamento automatico il [[Daemon (Italiano)|demone]] {{ic|fam}}.
 
+
# pacman -S gamin
+
# nano /etc/rc.conf  #rimuovere quindi fam dai demoni in avvio automatico
+
  
 
==Chroot==
 
==Chroot==
 +
Potrebbe essere necessario abbinare un utente(specifico) ad una cartella. Per effettuare questo, modificare il file {{ic|/etc/ssh/sshd_config}}:
  
Potrebbe essere necessario abbinare un utente(specifico) ad una crtella. Per effetture questo modificare il file {{Filename|/etc/ssh/sshd_config}}:
+
{{hc|/etc/ssh/sshd_config|2=<nowiki>.....
 
+
{{File|name=/etc/ssh/sshd_config|content=.....
+
 
Match User nomeutente  
 
Match User nomeutente  
 
       ChrootDirectory /chroot/%u
 
       ChrootDirectory /chroot/%u
Line 56: Line 48:
 
       AllowTcpForwarding no
 
       AllowTcpForwarding no
 
       X11Forwarding no
 
       X11Forwarding no
.....}}
+
.....</nowiki>}}
{{Nota|La cartella di chroot '''deve''' essere posseduta da root, altrimenti non sarà possibile connettersi. Per maggiori informazioni consultare le pagine di manuale relativea {{Codeline|Match, ChrootDirectrory}} e {{Codeline|ForceCommand}}.}}
+
{{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 {{ic|Match, ChrootDirectrory}} e {{ic|ForceCommand}}.}}
  
 
== Risoluzione dei problemi ==
 
== Risoluzione dei problemi ==
 
===Connection reset by peer===
 
===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 {{Filename|/etc/hosts}} aggiungendo l'indirizzo ed il nome del server.
+
* 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 {{ic|/etc/hosts}} aggiungendo l'indirizzo ed il nome del server.
* Se si stanno utilizzando chiavi con nomi non standard, passare l'opzione con {{Codeline|-i .ssh/my_key}}, non funziona. Sarà necessario usare {{Codeline|-o IdentityFile<nowiki>=</nowiki>/home/user/.ssh/my_key}}, specificando il percorso assoluto della chiave.
+
* Se si stanno utilizzando chiavi con nomi non standard, passare l'opzione con {{ic|-i .ssh/my_key}}, non funziona. Sarà necessario usare {{ic|-o IdentityFile<nowiki>=</nowiki>/home/user/.ssh/my_key}}, specificando il percorso assoluto della chiave.
* Aggiungere l'opzione '{{Codeline|sshfs_debug}}' (ad esempio '{{Codeline|sshfs -o sshfs_debug user@server ...}}') può aiutare ad avere maggiori informazioni per risolvere il problema.
+
* Aggiungere l'opzione '{{ic|sshfs_debug}}' (ad esempio '{{ic|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 [[Wikipedia:DD-WRT|DD-WRT]] o simile, la soluzione può essere trovata [http://www.dd-wrt.com/wiki/index.php/SFTP_with_DD-WRT quì].
 
* Se si utilizza sshfs in una rete gestita da un router che esegue [[Wikipedia:DD-WRT|DD-WRT]] o simile, la soluzione può essere trovata [http://www.dd-wrt.com/wiki/index.php/SFTP_with_DD-WRT quì].
* Discussione sul forum internazionale: [http://bbs.archlinux.org/viewtopic.php?id=27613 sshfs: Connection reset by peer]
+
* Discussione sul forum internazionale: [https://bbs.archlinux.org/viewtopic.php?id=27613 sshfs: Connection reset by peer]
  
{{Nota| Quando vengono passate diverse opzioni per sshfs, devono essere separate da una virgola. In questo modo: '{{Codeline|sshfs -o sshfs_debug,IdentityFile<nowiki>=</nowiki></path/to/key> user@server ...}}')}}
+
{{Nota| Quando vengono passate diverse opzioni per sshfs, devono essere separate da una virgola. In questo modo: '{{ic|sshfs -o sshfs_debug,IdentityFile<nowiki>=</nowiki></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 {{ic|Sybsystem}} elencato nel file {{ic|/etc/ssh/sshd_config}} sulla macchina remota, e controllare che sia corretto.
 +
* Sarà possibile constrollare digitando {{ic|find /  grep XXXX}} dove XXXX è il percorso del subsystem.
  
 
==fstab==
 
==fstab==
Un esempio di come usare sshfs per montare un filesystem remoto tramite {{Filename|/etc/[[Fstab|fstab]]}}
+
Un esempio di come usare sshfs per montare un filesystem remoto tramite {{ic|/etc/[[Fstab (Italiano)|fstab]]}}
 
  sshfs#NOMEUTENTE@NOMEMACCHINA_O_INDIRIZZOIP:/CARTELLA/REMOTA /PUNTO_DI_MOUNT/LOCALE fuse defaults 0 0
 
  sshfs#NOMEUTENTE@NOMEMACCHINA_O_INDIRIZZOIP:/CARTELLA/REMOTA /PUNTO_DI_MOUNT/LOCALE fuse defaults 0 0
  
Ecco come potrrebbe risultare la voce in fstab
+
Ecco come potrebbe risultare la voce in fstab
 
  sshfs#llib@192.168.1.200:/home/llib/FAH /media/FAH2 fuse defaults 0 0
 
  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. [[Using SSH Keys (Italiano)|Using SSH Keys]].
+
Comunque questo non funzionerà automaticamente se non si utilizza una chiave ssh per l'utente. [[SSH Keys (Italiano)|SSH Keys]].
  
Se si vuoile usare sshfs per diversi utenti:
+
Se si vuole usare sshfs per diversi utenti:
 
  sshfs#user@domain.org:/home/user  /media/user  fuse    defaults,allow_other    0  0
 
  sshfs#user@domain.org:/home/user  /media/user  fuse    defaults,allow_other    0  0
  
{{Nota| Con il precedente metodo, l'umount non verrà effettuato perche' il filesystem non si trova in {{Filename|fstab}}. Per evitare questo errore, rimuovere il prefisso '{{Codeline|sshfs#}}', cambiare il filesystem da '{{Codeline|fuse}}' a '{{Codeline|fuse.sshfs}}', quindi creare uno script chiamato '{{Filename|sbin/mount.fuse.sshfs}}':
+
{{Nota| Con il precedente metodo, l'umount non verrà effettuato perché il filesystem non si trova in {{ic|fstab}}. Per evitare questo errore, rimuovere il prefisso '{{ic|sshfs#}}', cambiare il filesystem da '{{ic|fuse}}' a '{{ic|fuse.sshfs}}', quindi creare uno script chiamato '{{ic|sbin/mount.fuse.sshfs}}':
  
{{File|name=sbin/mount.fuse.sshfs|content=#!/bin/bash
+
{{hc|/sbin/mount.fuse.sshfs|2=<nowiki>#!/bin/bash
 
DEVICE="$1"
 
DEVICE="$1"
 
MOUNTPOINT="$2"
 
MOUNTPOINT="$2"
Line 94: Line 90:
 
OPTIONS="${OPTIONS/,login=/,user=}"
 
OPTIONS="${OPTIONS/,login=/,user=}"
  
exec /usr/bin/sshfs "$DEVICE" "$MOUNTPOINT" -o "$OPTIONS"}}}}
+
exec /usr/bin/sshfs "$DEVICE" "$MOUNTPOINT" -o "$OPTIONS"</nowiki>}}}}
  
 
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.
 
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.
Line 100: Line 96:
  
 
==Opzioni==
 
==Opzioni==
 
+
sshfs può convertire automaticamente l'id dell'utente locale e remoto, se si aggiunge l'opzione {{ic|idmap}}:
sshfs può convertire automaticamente l'id dell'utente locale e remoto, se si aggiunge l'opzione {{Codeline|idmap}}:
+
  
 
  # sshfs -o idmap=user sessy@mycomputer:/home/sessy /mnt/sessy -C -p 9876
 
  # 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 {{Codeline|User}}:
+
Se per il server remoto si utilizza un nome utente diverso da quello in uso, può funzionare se viene utilizzata l'opzione ssh {{ic|User}}:
  
 
  # sshfs -o idmap=user,User=sessy2 sessy@mycomputer:/home/sessy /mnt/sessy -C -p 9876
 
  # sshfs -o idmap=user,User=sessy2 sessy@mycomputer:/home/sessy /mnt/sessy -C -p 9876

Revision as of 14:43, 3 December 2012

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 fam 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