How to Mount Remote Linux Filesystem or Directory Using SSHFS Over SSH

The main purpose of writing this article is to provide a step-by-step guide on how to mount remote Linux file system using SSHFS client over SSH.

This article is useful for those users and system administrators who want to mount remote file system on their local systems for whatever purposes. We have practically tested by installing SSHFS client on one of our Linux system and successfully mounted remote file systems.

Before we go further installation let’s understand about SSHFS and how it works.

Sshfs Mount Remote Linux Filesystem or Directory
Sshfs Mount Remote Linux Filesystem or Directory

What Is SSHFS?

SSHFS stands for (Secure SHell FileSystem) client that enable us to mount remote filesystem and interact with remote directories and files on a local machine using SSH File Transfer Protocol (SFTP).

Suggested Read: 10 sFTP Command Examples to Transfer Files on Remote Servers in Linux

SFTP is a secure file transfer protocol that provides file access, file transfer and file management features over Secure Shell protocol. Because SSH uses encryption while transferring files over the network from one computer to another computer and SSHFS comes with built-in FUSE (Filesystem in Userspace) kernel module that allows any non-privileged users to create their file system without modifying kernel code.

In this article, we will show you how to install and use SSHFS client on any Linux distribution to mount remote Linux filesystem or directory on a local Linux machine.

Step 1: Install SSHFS Client in Linux Systems

By default sshfs packages does not exists on all major Linux distributions, you need to enable epel repository under your Linux systems to install sshfs with the help of Yum command with their dependencies.

# yum install sshfs
# dnf install sshfs              [On Fedora 22+ releases]
$ sudo apt-get install sshfs     [On Debian/Ubuntu based systems]

Step 2: Creating SSHFS Mount Directory

Once the sshfs package installed, you need to create a mount point directory where you will mount your remote file system. For example, we have created mount directory under /mnt/tecmint.

# mkdir /mnt/tecmint
$ sudo mkdir /mnt/tecmint     [On Debian/Ubuntu based systems]

Step 3: Mounting Remote Filesystem with SSHFS

Once you have created your mount point directory, now run the following command as a root user to mount remote file system under /mnt/tecmint. In your case the mount directory would be anything.

The following command will mount remote directory called /home/tecmint under /mnt/tecmint in local system. (Don’t forget replace x.x.x.x with your IP Address and mount point).

# sshfs [email protected]:/home/tecmint/ /mnt/tecmint
$ sudo sshfs -o allow_other [email protected]:/home/tecmint/ /mnt/tecmint     [On Debian/Ubuntu based systems]

If your Linux server is configured with SSH key based authorization, then you will need to specify the path to your public keys as shown in the following command.

# sshfs -o IdentityFile=~/.ssh/id_rsa [email protected]:/home/tecmint/ /mnt/tecmint
$ sudo sshfs -o allow_other,IdentityFile=~/.ssh/id_rsa [email protected]:/home/tecmint/ /mnt/tecmint     [On Debian/Ubuntu based systems]

Step 4: Verifying Remote Filesystem is Mounted

If you have run the above command successfully without any errors, you will see the list of remote files and directories mounted under /mnt/tecmint.

# cd /mnt/tecmint
# ls
[[email protected] tecmint]# ls
12345.jpg                       ffmpeg-php-0.6.0.tbz2                Linux                                           news-closeup.xsl     s3.jpg
cmslogs                         gmd-latest.sql.tar.bz2               Malware                                         newsletter1.html     sshdallow
epel-release-6-5.noarch.rpm     json-1.2.1                           movies_list.php                                 pollbeta.sql
ffmpeg-php-0.6.0                json-1.2.1.tgz                       my_next_artical_v2.php                          pollbeta.tar.bz2

Step 5: Checking Mount Point with df -hT Command

If you run df -hT command you will see the remote file system mount point.

# df -hT
Sample Output
Filesystem                          Type        Size  Used Avail Use% Mounted on
udev                                devtmpfs    730M     0  730M   0% /dev
tmpfs                               tmpfs       150M  4.9M  145M   4% /run
/dev/sda1                           ext4         31G  5.5G   24G  19% /
tmpfs                               tmpfs       749M  216K  748M   1% /dev/shm
tmpfs                               tmpfs       5.0M  4.0K  5.0M   1% /run/lock
tmpfs                               tmpfs       749M     0  749M   0% /sys/fs/cgroup
tmpfs                               tmpfs       150M   44K  150M   1% /run/user/1000
[email protected]:/home/tecmint fuse.sshfs  324G   55G  253G  18% /mnt/tecmint

Suggested Read: 12 Useful “df” Commands to Check Disk Space in Linux

Step 6: Mounting Remote Filesystem Permanently

To mount remote filesystem permanently, you need to edit the file called /etc/fstab. To do, open the file with your favorite editor.

# vi /etc/fstab
$ sudo vi /etc/fstab     [On Debian/Ubuntu based systems]         

Go to the bottom of the file and add the following line to it and save the file and exit. The below entry mount remote server file system with default settings.

sshfs#[email protected]:/home/tecmint/ /mnt/tecmint fuse.sshfs defaults 0 0

Make sure you’ve SSH Passwordless Login in place between servers to auto mount filesystem during system reboots..

If your server is configured with SSH key based authorization, then add this line:

sshfs#[email protected]:/home/tecmint/ /mnt/tecmint fuse.sshfs IdentityFile=~/.ssh/id_rsa defaults 0 0

Next, you need to update the fstab file to reflect the changes.

# mount -a
$ sudo mount -a   [On Debian/Ubuntu based systems]

Step 7: Unmounting Remote Filesystem

To unmount remote filesystem, jun issue the following command it will unmount the remote file system.

# umount /mnt/tecmint

That’s all for now, if you’re facing any difficulties or need any help in mounting remote file system, please contact us via comments and if you feel this article is much useful then share it with your friends.

If you read this far, tweet to the author to show them you care. Tweet a thanks
Ravi Saive
I am an experienced GNU/Linux expert and a full-stack software developer with over a decade in the field of Linux and Open Source technologies

Each tutorial at TecMint is created by a team of experienced Linux system administrators so that it meets our high-quality standards.

Join the TecMint Weekly Newsletter (More Than 156,129 Linux Enthusiasts Have Subscribed)
Was this article helpful? Please add a comment or buy me a coffee to show your appreciation.

53 thoughts on “How to Mount Remote Linux Filesystem or Directory Using SSHFS Over SSH”

  1. I am getting this error while running mount -a command on ubuntu 14.04

    fuse: mountpoint is not empty
    fuse: if you are sure this is safe, use the ‘nonempty’ mount option

    Reply
  2. I followed the steps and created the mount. I am able to see the server files in my local Linux env. But I am not able to read or copy the file.

    It is throwing error as

    more EDI832.dat
    EDI832.dat: No such file or directory
    

    the file and folder user name is changed to users with permission 700
    What am I doing wrong?

    Reply
  3. The adding of line in fstab is ‘either I’m doing it wrong’ or there’s some issue with the command itself.

    I added the line below in my fstab:

    sshfs#[email protected]:/path/to/remote/dir /path/to/local/dir fuse.sshfs defaults 0 0
    

    But the mount -a gives me the following error:

    mount: wrong fs type, bad option, bad superblock on sshfs#[email protected]:/path/to/remote/dir,
    missing codepage or helper program, or other error
    

    However, when I mount normally without fstab, it works fine.

    Any suggestions?

    Reply
  4. Works like charm. But unmounting from Caja gives me an error. I have to do “fusermount -u /path/to/mounted/dir” to unmount the share. Any Ideas?

    Reply
    • @Fedrico,

      Thanks for sharing the tip, but I don’t have idea why you have to mention full path to mounted directory unmount it, the simple command unmount will work in most cases..

      Reply
    • @Andy,

      Nothing any advantages over Samba or NFS, but in Samba and NFS you need to setup and create a Share directory or filesystem on the server, and in client side you need to install client packages, but in Sshfs, you don’t need to install any packages on Server, just install the sshfs client package on local machine and mount any remote Linux directory over secure layer using SSH…

      Reply
  5. I’ve disabled password logins on my SSH server. I connect to my ssh server with my private RSA key. How do I do that in fstab method ?

    Reply
    • @Dwasifar,

      In NFS method, you need to setup both NFS Server and NFS client to share Linux filesystem, whereas in Sshfs, you don’t need to setup any server, just install the sshfs client on the local machine and mount any remote Linux server filesystem or directory over SSH.

      Reply

Got something to say? Join the discussion.

Have a question or suggestion? Please leave a comment to start the discussion. Please keep in mind that all comments are moderated and your email address will NOT be published.