teamviewer-like tool for ssh?
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 1.2.3.4:8080 %h %p
(Using port 443 is a common way to get around http proxies).
From your home computer, you can use "autossh" to setup a persistent tunnel to "third-pc" - see http://www.harding.motd.ca/autossh/ and http://www.linux.com/archive/feature/134133
From your work computer, you can then ssh up to "third-pc", then back down the autossh tunnel to your home computer.
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 share with another party that you wish to allow connecting to your terminal session. Another party just needs to have ssh installed.
Works through NATs without a 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...)
Also, tmate is open-source and allows you to set up and use your own server if you later decide to avoid using any 3rd-party service.
GoTTY: Share any terminal app you wish and the 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.
[1] Tool itself - i'd recommend taking look at jrdesktop [ http://jrdesktop.sourceforge.net/ ]; though not very active project and not particualry suited for modem-like connections, it is stable, reliable, multiplatform and works fine.
[2] Both jrdekstop and ssh, while not doing NAT-transversal (like Hamachi - so called zero configuration VPN; be sure to check this one! https://secure.logmein.com/products/hamachi2/), have options like "reverese connection" that you might find useful.
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.