As part of a drive to improve security we are moving more of our AWS EC2 development instances behind a VPN. This is fine for most things but the code editor we use, ShiftEdit, won’t see the servers behind the VPN as they are not publicly assessable over SSH. This means I was looking for a different solution. Ideally I wanted a code editor that had native SSH support using private keys or agent forwarding and had a tabbed interface. Unfortunately none of major players seemed to have what I was looking for.
There are a number of free editors that have sprung up recently including Adobe Brackets, Microsoft’s Code and Atom from GitHub. I really like Atom and I noticed that there were some plug-ins that purportedly supported SSH so I gave a couple of those a go but none seemed to work very well. One connected but wouldn’t show any files and the other wouldn’t connect at all.
Then I stubbled upon MacFuse, a Google project that allows you to mount various file systems as virtual drives on a Mac. This sounded ideal but the project had been discontinued a while ago but a quick search led me to one that was spawned from MacFuse that is still supported – FUSE for OSX.
It took me a while to get my head around how to connect FUSE for OSX to an EC2 instance so here is how I did it.
Installing the Required Components
First of all download and install FUSE for OSX from here: https://osxfuse.github.io/. Installation is mainly a case of clicking through the installer but when you get to the option make sure that you select “MacFUSE Compatibility Layer”:
Next download and install Macfusion from here: http://macfusionapp.org/. Then start Macfusion.
Configuring Macfusion
The first time you run you will see the following screen. Click Start and select the option to start at Login.
Next click the + at the bottom to add a new destination and select SSHFS from the menu:
Now enter your instance details:
It isn’t necessary to make any changes on the other tabs.
Making the Link to Your Key
Before you can connect to your instance you have to let Macfusion know where your key is held. To do this you need to create a text file called “config” in ~/.ssh. Into this file you need to put the following (changing “your-instance-key.pem” for the name of your key file).
IdentityFile ~/.ssh/your-instance-key.pem
You can add as many keys here as you need.
Connecting to Your Instance
Now you have everything set-up you can go back to Macfusion and click on the Mount button:
All being well the icon should turn green and say Mounted, as follows:
Viewing Your Files
Finally go to Finder and when you look at your mounted devices you should see your SSH drive. When you double click it will list the file on the remote drive and you can use them just as you would any other local file.
I was able to select a folder as a project in Atom and edit just as if the files were local.
When you are done unmount the drive.
It’s all relatively straight forward, let me know how you get on.