I have a number of linux computers at home, at uni, and my android phone. I'd like some way to be able to SSH to any one of them at any time, but they're all hidden behind different networks, and they may lose their connection or change their external IP address at any time.
Ideally, I'd have some background application, similar to Dropbox, that maintains a connection (reconnects) to some external service with a known address. Then, whenever I want to SSH from one computer to another, the service arranges for a connection to be made. I have a Raspberry Pi that has a DynDNS address and forwarded ports, so I can run the service myself if need be. But it's important that the traffic doesn't go via that server, since I don't want my two uni computers to be sending data home and back when they're sitting next to each other.
Is there software that does this?
Alternatively, is there a free VPN service similar to the old Hamachi that would work across several linux computers and android? Then they would all be on one pseudo-local network and could ssh between each other freely. As near as I can see, there are no such free services at the moment, which seems strange given the abundance of free file-syncing services (Dropbox, Google Drive, Mega, etc).