Last updated on November 25, 2020 by Dan Nanni
Suppose you would like to mount a remote directory locally. However, you only have ssh access to the host where the remote directory resides, and there is no network file system (e.g., NFS, Samba) available to export the directory with. In this case, you can actually mount a remote directory over ssh, and access the directory via file system interfaces.
Mounting a remote folder over ssh is handled by FUSE kernel module, which allows one to create a virtual file system in user space.
gvfs are two such virtual file systems built on FUSE that allow one to mount a remote file system over ssh. In this post, I will show how to mount a remote directory over ssh with
sshfs on Ubuntu or Debian:
$ sudo apt-get install sshfs
sshfs on CentOS, RHEL or Fedora, first enable EPEL repository on your system, and then run the following.
$ sudo yum install sshfs
If you want to use
sshfs as a non-root user, you need to add the user to a group called
fuse. That is:
$ sudo usermod -a -G fuse <user_name>
Run the following to make group membership change activated.
$ exec su -l $USER
Finally, you can mount a remote directory using
sshfs as follows.
$ sshfs [email protected]_host:/path/to/directory <local_mount_point>
The above command will ask you for ssh password for the remote host. Once you enter the password, a remote directory will become available at the local mount point. If you want to set up passwordless mounting, all you have to do is to set up passwordless ssh login to
To unmount an ssh-mounted directory:
$ fusermount -u <local_mount_point>
If you would like to automatically mount over ssh upon boot, set up passwordless ssh login, and append the following in
$ sudo vi /etc/fstab
sshfs#[email protected]_host:/path/to/directory <local_mount_point> fuse user 0 0
If you are using GNOME desktop, mounting over ssh is quite easy. Nautilus, the official file manager for GNOME desktop, already supports mounting over ssh. Underneath it, Nautilus uses
gvfs virtual file system which can expose
gvfs mounts over ssh using FUSE.
To mount a remote folder over ssh with Nautilus, go to
File->Connect to Server on Nautilus. Then type in the remote ssh server information, remote folder path, as well as ssh login credentials as follows.
Once you click on
Connect button, a local mount point will automatically be generated, and a remote directory will be mounted there via
gvfs. To check a
gvfs mount point, run the following.
gvfsd-fuse on /run/user/xmodulo/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=xmodulo)
$ ls /run/user/xmodulo/gvfs
In this example, the local
gvfs mount point is as follows. You can access a remote directory either via command-line at this mount point, or through Nautilus GUI.