Working on a remote box with sshfs

I needed to edit numerous files today on a remote linux box. Normally, I
would ssh in and use vi. However, I had to edit ruby/rhtml files and I
wanted a familiar environment (in this case, TextMate).

I briefly looked at mounting the remote filesystem over class="caps">NFS. However, NFS was not
set up and I did not have the permissions to do it myself.

I googled around for a bit and discovered
sshfs. This tool let me mount a remote file system with nothing more than ssh access. It is even
included in MacPorts.

All I had to do was run:

% sudo port install sshfs

to install it, and then:

% sshfs user@host:/path/to/remote /tmp/remotefs

to mount the remote path under /tmp/remotefs on the local box. Now, I
can open TextMate and edit the files as if they were local:

% cd /tmp/remotefs
% mate .

sshfs uses class="caps">FUSE to set up a
filesystem in user space. I do not need root access to mount the
filesystem, and once it is mounted, it acts just like any other
filesystem.

Here is the entry from running ‘df’:

sshfs#user@host:/path/to/remote
                       7812500         0   7812500   0% /tmp/remotefs

I can now unmount the drive with (unless it is a mac, for some reason):

% fusermount -u /tmp/remotefs

or the more familiar:

% sudo umount /tmp/remotefs

Note that using fusermount does not require root but using umount does.