I want to access my home computer from work through SSH, but the problem is my home computer is behind a NAT router (which I don’t have access to). Because my work computer has a CentOS installed and is behind a proxy, I couldn’t use TeamViwer (TV is ported on Linux with wine, and apparently proxy settings won’t work).
Does anyone has knowledge of a program that would suit my needs?
Once you establish such VPN between machines, you are free to use ssh,X,RDP,jrdesktop,VNC and other tools of your choice as you would in normal LAN. If you don’t trust third party “transversal provider”, I heared that it’s relatively easy to write your own counterpart to such software (still, at least one of machines must be public, or both NAT-ed must have temporary access to public third machine).
Also, people at serverfault.com might offer better insights.
I have been looking for same thing and have found two tools!
tmate – instant terminal sharing
GoTTY – Share your terminal as a web application
tmate – When you start tmate in your terminal it will create a ssh link that you can to share with other party that you wish to allow to connect to your terminal session. Other party just need to have ssh installed.
Works trough NATs without problem, no 3rd party tool is needed.
tmate ssh links look like this:
Just install tmate on your system, there are packages in official repositories for almost all major distros (Fedora, Debian, Arch, Ubuntu…)
GoTTY – share any terminal app you wish and other party doesn’t even need to have ssh, but you need to sort out port forwarding if you are behind a firewall and NAT.
From the sounds of it, there’s no particular “application” that’s going to solve your problem, it’s more of a networking issue – your home computer is behind NAT and your work computer is behind a proxy (http or socks).
So you need a third computer – preferably running Linux or BSD – call it “third-pc”. A cheap Linux vps hosting is probably the best way to go.
From your work computer, you can use “connect” in your ssh configuration to tunnel through the proxy to “third-pc” – see http://bent.latency.net/bent/git/goto-san-connect-1.85/src/connect.html.
For example, here is an entry I have in my ~/.ssh/config:
Host foo.dyndns.org User sonia Port 443 ProxyCommand connect -H 184.108.40.206:8080 %h %p
(Using port 443 is a common way to get around http proxies).
From your work computer, you can then ssh up to “third-pc”, then back down the autossh tunnel to your home computer.
You could also use an alternative like Robo-TiTO. This make your server accessible by Jabber chat, (GTalk/Hangouts) for example. It is a pretty simple and straight-forward terminal access. I’ve been using for a few years. I usually open a reverse SSH tunnel with it and after that it is just a proper SSH access.
I don’t know if you mean you don’t have external-net remote management of your home router, or if someone else keeps the password, but, if you can get access to your router you should likely be able to set up port forwarding so that when you ssh to the public-facing ip of the router, it will automatically send all ssh traffic to a box on the inside network.
Unless your ISP is doing something dastardly with carrier-grade NAT, that should work just fine.
Alternatively, you should be able to connect from home to your work machine via ssh and create a tunnel so that you can shell to your work machine and then grab the session between home and work.
NX uses ssh transport. NoMachine distributes both free and premium versions of the tool, and there’s also freenx.
If you only need an ssh connection, you can spend 2.99$/month to buy a cheap vps, and use reverse ssh or ngrok to logging your computer behind NAT.
You might be able just to use X forwarding with
ssh -X host or
ssh -Y host and just open graphical applications. Or you set up a VNC server that you could tunnel trough SSH as well.