I'm looking to offer a Linux remote support service, to PC's which are mostly behind home NAT routers which don't have any ports forwarded. I want to be able to connect to those PC's by SSH upon request.
I also want to make this a simple as possible to users who probably have no idea how to forward a port on the router.
I'm hoping there is a command that I can give them, which they can paste into a terminal which will connect directly to my machine, setting up a reverse tunnel, through which I can then connect back to their machine via SSH login command.
I'm looking to achieve a command line session, but if I can also have the option to create a remote desktop session instead, that would be a bonus on the occasion that I'm diagnosing a GUI issue.
I have in the past achieved this using a middle machine that is already behind the router and pre-prepared with a reverse tunnel, which is ideal if maintaining a site full of machines, but in this situation, no middle machine or pre-preparation will be available.
Is this possible, or a lost cause?
I note that TeamViewer is able to do exactly what I want, in terms of avoiding port forwarding, but it only gives me a GUI and the most important thing to me is a terminal prompt. Surely, if this is possible for a GUI, this must be a cinch to get just a command prompt?