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 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 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.