Work on a remote project with Eclipse via SSH

201,191

Solution 1

Try the Remote System Explorer (RSE). It's a set of plug-ins to do exactly what you want.

RSE may already be included in your current Eclipse installation. To check in Eclipse Indigo go to Window > Open Perspective > Other... and choose Remote System Explorer from the Open Perspective dialog to open the RSE perspective.

To create an SSH remote project from the RSE perspective in Eclipse:

  1. Define a new connection and choose SSH Only from the Select Remote System Type screen in the New Connection dialog.
  2. Enter the connection information then choose Finish.
  3. Connect to the new host. (Assumes SSH keys are already setup.)
  4. Once connected, drill down into the host's Sftp Files, choose a folder and select Create Remote Project from the item's context menu. (Wait as the remote project is created.)

If done correctly, there should now be a new remote project accessible from the Project Explorer and other perspectives within eclipse. With the SSH connection set-up correctly passwords can be made an optional part of the normal SSH authentication process. A remote project with Eclipse via SSH is now created.

Solution 2

The very simplest way would be to run Eclipse CDT on the Linux Box and use either X11-Forwarding or remote desktop software such as VNC.

This, of course, is only possible when you Eclipse is present on the Linux box and your network connection to the box is sufficiently fast.

The advantage is that, due to everything being local, you won't have synchronization issues, and you don't get any awkward cross-platform issues.

If you have no eclipse on the box, you could thinking of sharing your linux working directory via SMB (or SSHFS) and access it from your windows machine, but that would require quite some setup.

Both would be better than having two copies, especially when it's cross-platform.

Solution 3

I'm in the same spot myself (or was), FWIW I ended up checking out to a samba share on the Linux host and editing that share locally on the Windows machine with notepad++, then I compiled on the Linux box via PuTTY. (We weren't allowed to update the ten y/o versions of the editors on the Linux host and it didn't have Java, so I gave up on X11 forwarding)

Now... I run modern Linux in a VM on my Windows host, add all the tools I want (e.g. CDT) to the VM and then I checkout and build in a chroot jail that closely resembles the RTE.

It's a clunky solution but I thought I'd throw it in to the mix.

Solution 4

My solution is similar to the SAMBA one except using sshfs. Mount my remote server with sshfs, open my makefile project on the remote machine. Go from there.

It seems I can run a GUI frontend to mercurial this way as well.

Building my remote code is as simple as: ssh address remote_make_command

I am looking for a decent way to debug though. Possibly via gdbserver?

Solution 5

I tried ssh -X but it was unbearably slow.

I also tried RSE, but it didn't even support building the project with a Makefile (I'm being told that this has changed since I posted my answer, but I haven't tried that out)

I read that NX is faster than X11 forwarding, but I couldn't get it to work.

Finally, I found out that my server supports X2Go (the link has install instructions if yours does not). Now I only had to:

  • download and unpack Eclipse on the server,
  • install X2Go on my local machine (sudo apt-get install x2goclient on Ubuntu),
  • configure the connection (host, auto-login with ssh key, choose to run Eclipse).

Everything is just as if I was working on a local machine, including building, debugging, and code indexing. And there are no noticeable lags.

Share:
201,191

Related videos on Youtube

Kos
Author by

Kos

MRW they close a question while I'm still answering Software developer, dilettante musician, bookworm. Enjoys tea, Python, piano, chiptune, functional programming and innovation.

Updated on December 19, 2021

Comments

  • Kos
    Kos over 2 years

    I have the following boxes:

    a) A Windows box with Eclipse CDT,
    b) A Linux box, accessible for me only via SSH.

    Both the compiler and the hardware required to build and run my project is only on machine B.

    I'd like to work "transparently" from a Windows box on that project using Eclipse CDT and be able to build, run and debug the project remotely from within the IDE.

    How do I set up that:

    • The building will work? Any simpler solutions than writing a local makefile which would rsync the project and then call a remote makefile to initiate the actual build? Does Eclipse managed build have a feature for that?
    • The debugging will work?
    • Preferably - the Eclipse CDT code indexing will work? Do I have to copy all required header files from machine B to machine A and add them to include path manually?
    • Aleksandr Levchuk
      Aleksandr Levchuk over 12 years
      Kos, did you end-up using RSE? How was your experience?
    • Kos
      Kos almost 12 years
      I managed to do it, but: a) CDT had some problems with being aware of the virtual file system (AFAIK this is a temporary issue and will vanish when they rewrite some things to a newer API; maybe they already did? IDK) and b) I had to roll up my own compilation chain (via a custom makefile) and c) an unpleasant annoyance- file save took like 2~3 seconds and this was disturbing.
    • Kos
      Kos almost 12 years
      If I'd need to work remotely again today, I'd probably take another spin with RSE, but I might find it more feasible to keep it as a local project and roll up a custom build system, based on e.g. rsync as I've mentioned.
    • Kos
      Kos almost 12 years
      And unfortunately- I haven't managed to set up remote debugging or indexing of remote library headers. I doubt that the latter can even be done. The former - I'm positive it can, but I didn't really had the need to dig into it.
    • Arjun J Rao
      Arjun J Rao over 10 years
      I access my remote machine by first logging into a login server and then logging from there to my remote machine. Both have different passwords. Is there any way to work on such a remote machine in Eclipse ?
    • Kos
      Kos over 10 years
      @ArjunJRao I'd experiment with opening an SSH tunnel all the way you want to be, and having Eclipse use that tunnel
    • Arjun J Rao
      Arjun J Rao over 10 years
      @Kos: How can this be done ? COuld you please elaborate ?
    • Gabriel Staples
      Gabriel Staples about 4 years
      Here's a git wrapper I wrote in bash to auto-sync a repo from one computer to another. This just answers the question of how to easily develop on one machine in Eclipse while building on another machine. It also assumes the building on the other machine happens from the command-line. stackoverflow.com/questions/4216822/…
  • Kos
    Kos over 13 years
    I'm afraid the linux box doesn't even have X11. :)
  • Ioan
    Ioan over 13 years
    RSE is still tricky. The best idea from RSE is for Eclipse to do everything over an SSH connection, but that feature isn't yet working. The working feature involves some server which you need to setup on the Linux box.
  • matbrgz
    matbrgz over 13 years
    @Kos, you need the X11-server to run where you physically sit - either with a Linux in a virtual machine, or an X11 server for Windows - and Eclipse to run on the Linux server. ssh just allows for tunneling the network data - you will find compression + "-c blowfish" to help the experience.
  • Aaron Digulla
    Aaron Digulla over 13 years
    If all else fails, modify the project locally. Then install cygwin or mingw so you get "rsync". That allows you to efficiently copy the files over SSH to the remote Linux box. And install Putty to get a remote console. Now you only need to memorize this key-sequence "Ctrl+S Alt-Tab Alt-Tab Up Return Alt-Tab Alt-Tab Up Return" (save in Eclipse, go to the console with "rsync", execute it again, go to putty, run the make command on Linux).
  • Aaron Digulla
    Aaron Digulla over 13 years
    Also the RSE guys like to get bug/enhancement reports.
  • Kos
    Kos over 13 years
    Just to clarify - are you referring to what's called "headless Eclipse" on the remote machine? (Well, provided it even has Java :)). I was looking for a light client-side solution, but having some setup on the remote machine could be an option too.
  • Kos
    Kos over 13 years
    @Aaron - I've tried that rsync solution before, from a Makefile - which basically would replace your key sequence with one Ctrl+B. The problem is that with this approach I can neither run nor debug from Eclipse. The RSE indeed sounds like good tool from the job; @Ioan, can you elaborate on what's not working? The RSE wiki seems to list SSH file systems and remote debugging as a current feature... Or I'll just try it out this Monday.
  • Aaron Digulla
    Aaron Digulla over 13 years
    @Kos: No. X11 works like this: You have a client and a server. The server is where the monitor is connected. It does all the rendering and displaying. The client (Eclipse in this case) just sends rendering commands to the server. So you must install X11 on Windows and run Eclipse on your Linux box. All you need to do on Linux is set the DISPLAY variable so Eclipse knows where the server is.
  • Ioan
    Ioan over 13 years
    If you can get the SSH feature of RSE working, great, I wasn't able to. Best I could do is a complicated mess of Windows shares, batch files, SSH connections, and remote debugging.
  • Kos
    Kos over 13 years
    Nice, but cannot be called "transparent" - doesn't allow debugging at the very least. Also could be based on RSync instead of Samba (which is what I had before I posted my original question).
  • Zero
    Zero about 13 years
    The best thing is that when you re-open eclipse, it takes you right to the directory that you were working in when you last closed. For UTF-8, right click on any file or folder and select properties. In the info tab, change file encoding to "UTF-8". It gets applied to all files and folders for that connection.
  • Bob the Egg
    Bob the Egg about 12 years
    is there a way to make this run as root? (like using sudo bash in the command line, only so that it makes the RSE run as root instead of the terminal)?
  • Aaron Digulla
    Aaron Digulla about 12 years
    @Rothschilde: No. As a general rule, never run large applications as root. Create a normal user, develop, test and compile and then use root to deploy.
  • mattalxndr
    mattalxndr almost 12 years
    The network needs to be fast though, and so does your server, and or Eclipse will run really slow.
  • Argent
    Argent over 10 years
    This looks like something that's almost what I am looking for - I too need to run Eclipse from my local Windows installation and use it to develop projects on a remote Linux box. I created a remote project from the RSE perspective, but when I open any of the source files from the Project Explorer, Eclipse throws about a million errors (it doesn't recognize anything except for C++ keywords and function parameters). Least of all, I want to add certain (remote) directories to the project's Paths & Symbols, but all I can choose from is my local machine...
  • Aaron Digulla
    Aaron Digulla over 10 years
    @Argent: I'm guessing here but did you download a version of Eclipse which understands C/C++? Look for "CDE". By default, Eclipse usually only contains support for Java.
  • Argent
    Argent over 10 years
    @AaronDigulla, I did. If I try to create an empty project, for example, the options list C/C++, not Java.
  • Aaron Digulla
    Aaron Digulla over 10 years
    @Argent: Then you should try to ask a question here. Note: Include useful information (like which errors you see, not just "million errors").
  • shaoyl85
    shaoyl85 over 10 years
    @AaronDigulla Hi, the solution is cool, but I found that when I'm building the remote project, Eclipse is trying to compile it locally. Is there anyway to let it compile and run in the remote machine?
  • Aaron Digulla
    Aaron Digulla over 10 years
    @shaoyl85: I'm not using the RSE myself; please ask a new question.
  • dtmland
    dtmland almost 9 years
    Can the RSE be used to do this?
  • ComputerScientist
    ComputerScientist over 8 years
    Is this stuff still relevant in Sept 2015?
  • Black_Zero
    Black_Zero almost 8 years
    C/C++ indexing is not working properly with RSE. Indexer complains about missing symbols. It works well when the project and source files are stored locally but with RSE it does'nt. any ideas?
  • Aaron Digulla
    Aaron Digulla almost 8 years
    @Black_Zero No. Did you check the error log? Maybe they try to execute ctags or similar and the tool isn't installed remotely.
  • Black_Zero
    Black_Zero almost 8 years
    @AaronDigulla: How can I check the logs in Eclipse? The only thing I see is a message in RED in the status bar saying "Could not find symbol 'XXXXXYYY' in Index".
  • Aaron Digulla
    Aaron Digulla almost 8 years
    @Black_Zero Open the view "Error log" help.eclipse.org/mars/…
  • faintsignal
    faintsignal almost 6 years
    RSE, being its own context, prevents utilizing one of the specialized contexts for your remote project. E.g. I can work remotely with RSE but lose the benefits of the PHP context plugin. :(
  • Guru Prasad Venkatarao
    Guru Prasad Venkatarao almost 5 years
    Followed it and was able to import the remote project. But how do I get the reference of the remote maven repo libraries?
  • Andy Madge
    Andy Madge about 3 years
    Just to add this also works extremely well with Windows at the client end. Simple and easy to install both the client and the server, and the experience is just like working locally.
  • ks1322
    ks1322 over 2 years
    IMO this solution is useless without working C/C++ Indexer.