sshfs è un filesystem di tipo client basato sul ssh File Tranfer Protocol e su Fuse ( il miglior filesystem usersspaceper linux- Filesystem in USErspace ). Consente ad un client di accedere ad una macchina remota in cui gira ssh server montando e interagendo con directory e files senza ovviamente azioni da compiere a livello di server. In pratica semplificando consente di montare in modo temporaneo o permanete un filesystem sftp.
Se effettuando il mount da remoto con sshfs compare il messaggio Connection reset by peer si può effettuare il check del problema con l’opzione -d
$ sudo sshfs -o allow_other -o "IdentityFile=~/.ssh/CorpWebKeyPair.pem" centenos@19.149.167.248:/mnt /mnt/mnt45
read: Connection reset by peer
In questo caso per vedere se è un problema di permessi o altro aggiungere l’opzione – d
oppure -o debug
come si può vedere
$ sudo sshfs -o allow_other -d -o "IdentityFile=~/.ssh/CorpWebKeyPair.pem" centenos@19.149.167.248:/mnt /mnt/mnt45
FUSE library version: 2.9.7
nullpath_ok: 0
nopath: 0
utime_omit_ok: 0
no such identity: /root/.ssh/CorpWebKeyPair.pem: No such file or directory
Permission denied (publickey).
read: Connection reset by peer
In questo caso è un problema di permessi. Il file identity non viene trovato.
Ovviamente sshfs, come ssh, non necessità del ruolo superuser.
Altro errore con sshfs si può avere non è stato precisato un percorso base per il server remoto ad esempio:
sshfs -o allow_other -o "IdentityFile=~/.ssh/CorpWebKeyPair.pem" centenos@19.149.167.248 mnt/mnt45
Se compare un messaggio di errore del tipo
fuse: bad mount point `/mnt/u138': Transport endpoint is not connected
Smontare la directory in questo esempio ( /mnt/u138 )
sudo umount /mnt/u138c
o
sudo fusermount -u /mnt/u138c
qualora si riscontrino problemi e necessario preventivametne bloccare i processi sshfs prima di smontare il percorso. Per dettagli fare riferimento al post fuse: bad mount point : Transport endpoint is not connected
In caso la connessione subisca una caduta temporanea e possibile ovviare usando l’opzione reconnect
Se compare il messaggio
fusermount: user has no write access to mountpoint
lo user che sta effettuando il mount con sshfs non ha i permessi adeguati si può provare ad usare l’utente super user
Se compare il messaggio
fusermount: option allow_other only allowed if 'user_allow_other' is set in /etc/fuse.conf
abilitare user_allow_other in /etc/fuse.conf
# Allow non-root users to specify the allow_other or allow_root mount options.
# user_allow_other
sshfs
sshfs in debian / ubuntu si installa con
$ apt install sshfs
Montare un cartella remota con ssh
installato sshfs è possibile condividere i files del computer remoto senza bisogno di servizi quali samba, nfs o fto da abilitare nel server. Per rendere disponibili files effettuare il mount con
sshfs [<user>@]<host-remoto>:</cartella/da/montare> <cartella_locale>
es
sshfs maurizio@182.35.193.165:/media/www.2 media/www-2
Il mounting così realizzato rende le risorse remote accessibili solo come root per consentire agli altri utenti di accedere a queste risorse è necessario moficare il file /etc/fuse.conf
sudo nano /etc/fuse.conf
attivando l’opzione
user_allow_other
e quindi effettuando il mount con l’opzione allow_other
sshfs -o allow_other maurizio@182.35.193.165:/media/www.2 media/www-2
per montare la home prevedibilmente
sshfs -o allow_other maurizio@182.35.193.165: /home/maurizio/remote
Mounting permanente di una directory remota
Per rendere il mount sshfs permante editare il file fstab è inserire una linea tipo
sshfs#root@182.35.193.165:/ /mnt/ssh fuse defaults 0 0
salvare il file quindi per aggiornare lo stato del fstab file per il kernel.
mount -a
per gestire la connessione a file system remoti utilizzando ssh è possibile utilizzare anche un comodo applicativo a interfaccia grafica gigolo
sshfs + samba
Se si desidera realizzare un mount ad una macchina window da un pc linux senza il procotollo samba si può sempre valutare la possiiblità di realizzare una ponte utilizzando una seconda macchina linux con samba e quindi effettuare un mount sshfs alla macchina ponte.
In questo caso la macchina linux (192.168.1.4) ponte potrebbe effettuare un mount delle risorse della macchina window ( 192.168.1.86) che devono essere condivise con un comando del tipo
mkdir /mnt/biblio86
sudo mount -t cifs -o username=maurizio -p //192.168.1.86/biblio /mnt/biblio86
la macchina linux priva di samba (192.168.1.164) potrebbe a questo punto effettuare un mount sshfs della macchina linux ponte ( 192.168.1.4)
mkdir /mnt/biblio486
sudo sshfs -o allow_other maurizio@192.168.1.4:/mnt/biblio86 /mnt/biblio486
Risorse: