You can access remote filesystem as a local filesystem by mounting the remote filesystem using sshfs. This is similar to other remote filesystem implementations such as SAMBA/CIFS or NFS.

sshfs uses SFTP protocol and requires ssh access to the remote server to work. If you just want to copy or perform a simple file transfer, you can just use scp or sftp without having to mount the remote filesystem.

Remote filesystem of SSH-enabled host can be mounted as a local filesystem by installing and configuring sshfs from the terminal.

Steps to mount remote filesystem to local host using sshfs:

  1. Launch terminal.
  2. Install sshfs on the local host.
    [email protected]:~$ sudo apt update && sudo apt install --assume-yes sshfs #Ubuntu and Debian variance
    [email protected]:~$ sudo dnf --enablerepo=PowerTools --assumeyes install fuse-sshfs #CentOS and Red Hat variance
  3. Test SSH access to the remote host.
    [email protected]:~$ ssh [email protected]
    The authenticity of host '192.168.111.20 (192.168.111.20)' can't be established.
    ECDSA key fingerprint is SHA256:w3b7BfZzQrrY75Fx1XYH0t2RVkiXb7r6+gcC5umTR7o.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    Warning: Permanently added '192.168.111.20' (ECDSA) to the list of known hosts.
    [email protected]'s password: 
    Welcome to Ubuntu 20.10 (GNU/Linux 5.8.0-25-generic x86_64)
    
     * Documentation:  https://help.ubuntu.com
     * Management:     https://landscape.canonical.com
     * Support:        https://ubuntu.com/advantage
    
    0 updates can be installed immediately.
    0 of these updates are security updates.
    
    
    The programs included with the Ubuntu system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.
    
    Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
    applicable law.
    
    [email protected]:~$ exit
    logout
    Connection to 192.168.111.20 closed.

    Make sure the user that you're connecting to have full access to the directory that you want to mount.

  4. Create new directory locally to mount the remote filesystem if it doesn't already exist.
    [email protected]:~$ mkdir -p /home/localuser/remote
  5. Manually mount remote filesystem using sshfs.
    [email protected]:~$ sshfs [email protected]:/home/remoteuser/shared /home/localuser/remote
    [email protected]'s password: 
  6. Check if mount successful.
    [email protected]:~$ df -h
    Filesystem                             Size  Used Avail Use% Mounted on
    tmpfs                                  391M  1.8M  389M   1% /run
    /dev/sda3                               20G  6.4G   12G  35% /
    tmpfs                                  2.0G     0  2.0G   0% /dev/shm
    tmpfs                                  5.0M  4.0K  5.0M   1% /run/lock
    tmpfs                                  4.0M     0  4.0M   0% /sys/fs/cgroup
    /dev/sda2                              512M  7.8M  505M   2% /boot/efi
    tmpfs                                  391M  104K  391M   1% /run/user/1000
    [email protected]:/home/remoteuser/shared   20G  6.4G   12G  35% /home/localuser/remote
  7. Access mount point to test.
    [email protected]:~$ touch /home/localuser/remote/file.txt
  8. Unmount remote sshfs filesystem.
    [email protected]:~$ umount /home/localuser/remote
  9. Check if unmount successful.
    [email protected]:~$ df -h
    Filesystem                             Size  Used Avail Use% Mounted on
    tmpfs                                  391M  1.8M  389M   1% /run
    /dev/sda3                               20G  6.4G   12G  35% /
    tmpfs                                  2.0G     0  2.0G   0% /dev/shm
    tmpfs                                  5.0M  4.0K  5.0M   1% /run/lock
    tmpfs                                  4.0M     0  4.0M   0% /sys/fs/cgroup
    /dev/sda2                              512M  7.8M  505M   2% /boot/efi
    tmpfs                                  391M  104K  391M   1% /run/user/1000
  10. Open /etc/fstab using your preferred text editor to configure automatic mounting using sshfs during system startup.
    [email protected]:~$ sudo vi /etc/fstab

    This method require passwordless SSH configured for the user.

  11. Add sshfs entry to /etc/fstab.
    sshfs#[email protected]:/home/remoteuser/shared  /home/localuser/remote fuse user,_netdev,reconnect,uid=1000,gid=1000,idmap=user  0   0

    Use id command to get the uid and gid of the user.

    [email protected]:~$ id
    uid=1000(user) gid=1000(user) groups=1000(user),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),121(lpadmin),132(lxd),133(sambashare)
  12. Mount remote filesystem via /etc/fstab.
    [email protected]:~$ mount /home/localuser/remote
  13. Check if mount successful.
    [email protected]:~$ df -h
    Filesystem                             Size  Used Avail Use% Mounted on
    tmpfs                                  391M  1.9M  389M   1% /run
    /dev/sda3                               20G  6.4G   12G  35% /
    tmpfs                                  2.0G     0  2.0G   0% /dev/shm
    tmpfs                                  5.0M  4.0K  5.0M   1% /run/lock
    tmpfs                                  4.0M     0  4.0M   0% /sys/fs/cgroup
    /dev/sda2                              512M  7.8M  505M   2% /boot/efi
    tmpfs                                  391M  108K  391M   1% /run/user/1000
    [email protected]:/home/remoteuser/shared   20G  6.4G   12G  35% /home/localuser/remote

Support us on Patreon if this guide has helped you. Thanks!!!

Discuss the article:

Comment anonymously. Login not required.

Share!