Edit-text-files-over-SSH using a local text editor

sftpsshtext-editors

I am working in various Linux and UNIX environments.

I'd like to elegantly solve the problem of editing remote configuration files over SSH. Instead of using terminal editors (nano), I'd like to open the file in a local text editor on my desktop (Sublime Text 2).

CyberDuck, WinSCP and various other SFTP apps can do this.

Using editors over X11 forwarding has also proven to be problematic. Also using archaic text editors like Vim or Emacs do not serve my needs well. They could do this, but I prefer using other text editing software.

Using ssh mounts (FUSE) are also problematic unless they can happen on the demand and triggered by the remote site.

So what I hope to achieve

  • Have a somekind of easily deployable shell script etc. which I can copy to remote server (let's call it mooedit)

  • I run mooedit command on the remote server of which I have connected over SSH connection

  • mooedit sends some kind of signal (over SSH( to my local desktop

  • On my local desktop this signal is captured and it determines 'a ha! moo wants to edit a file on server X in folder Y'

  • File is SFTP transfered to the local desktop (/tmp)

  • File is opened in a nice GUI text editor on the local desktop

  • When Save is pressed, the local desktop notices changes in the file and SFTP sends the resulting file back to the server

The question is:

  • What signaling mechanisms SSH provides for this?

  • Any other methods to trigger a local text editor for remote SSH file?

Best Answer

You can use rsub and rmate to edit remote files in your local Sublime Text over ssh.

You need to

  • install the rsub package in Sublime Text (with Package Manager)
  • forward port 52698 via ssh, use ssh -R 52698:localhost:52698 ... or set your config

    • create/edit ~/.ssh/config and chmod 600 ~/.ssh/config (to avoid a permissions problem)
    • add (replace SERVERNAME with your server, you can also use *):

Host SERVERNAME
  RemoteForward 52698 127.0.0.1:52698

  • connect to your server with ssh
  • install the rsub script on the remote machine:

sudo wget -O /usr/local/bin/rsub https://raw.github.com/aurora/rmate/master/rmate
sudo chmod +x /usr/local/bin/rsub

Then you can do rsub file in the ssh session and it will open file in your local ST editor.

Works with ST2/ST3 and you can also sudo rsub file!