This is an old revision of the document!


Mounting a Remote Filesystem Locally

It can often be beneficial to mount a remote filesystem locally to your computer, allowing you to treat the contents as if they were local to your machine. This would, for example, allow you to use a local IDE to edit/compile/run files hosted on stu.cs.jmu.edu. This article describes how to mount your JMUCS home directory from a Linux client using sshfs. Implementations also exist for macOS (see below for details) and Windows.

Prerequisites

  1. SSH access to the server hosting the filesystem you wish to mount. It can be helpful to set up ssh keypairs as well.
  2. Install the sshfs client on your local machine. Most distributions package sshfs in their repositories and installing from there is far easier than compiling it yourself. For Ubuntu/Mint you could run apt-get install sshfs.

Mounting the remote filesystem

You must create a local mountpoint before mounting the remote filesystem (this must be done only once). Then the filesystem can be mounted.

mkdir -p ~/mnt/stu
sshfs <eid>@stu.cs.jmu.edu: ~/mnt/stu

Where <eid> is your JMU username. The ~/mnt/stu directory on your local machine now contains the contents of your JMUCS home directory. Changes made in one place will automatically be reflected in the other.

See man sshfs for additional options; in particular, the -o idmap=user option is necessary if your UIDs do not match between the client and the server (this is likely the case on personal machines).

Unmounting the filesystem

When you are done using the remote filesystem you should unmount it using the fuermount command.

fusermount -u ~/mnt/stu

macOS

Download and install both the “FUSE for macOS” and “SSHFS” packages from this page, following the instructions as prompted. When prompted, enable the “FUSE for macOS Preference Pane” to facilitate future updates. You will also need to enable a system extension in your Security & Privacy System Preferences.''

After everything is installed correctly, you should be able to follow the same command-line instructions described in the sections above.