Remote Support Options

When it comes to the remote support of client machines, there are quite a few options available, with each of them having their advantages and disadvantages. I tend to use VNC based clients and servers, over SSH, because the servers will operate on all architectures that X11 supports and there are a lot of connection options that can be used. I have also used Log Me In, but the performance seems a bit slower than it should be, even though you have to pay for the service. I normally connect to the remote servers over SSH with the command line, so the method is not necessarily user friendly, but I have found it to be 100% reliable and I will always take reliability over convenience.
Sometimes a client will have a machine that is behind a firewall, so I have developed some methods that can be used to still allow a remote connection, without any extra software having to be installed. The first method is similar to Log Me In, where I have a server that is on the internet, that acts as a proxy for the client to connect to. The client then just has to download a client, which does not have to be installed, with the server address and port then having to be entered, to initiate the connection. The next method is a USB flash drive that I have adjusted so that it will boot up and then make an SSH connection to my server on the internet, with a port forward of its own SSH service, so that I can then connect to it and create tunnels from open ports, on any of the machines on the remote, firewalled, network. This method does require the client to have a spare machine available, so I was prompted to develop the next method which is a Raspberry Pi that I have configured to boot up in the same way as the above USB flash drive, with the client only then having to connect the ethernet cable to their router and the power supply to the mains. I have so far used the Raspberry Pi to reconfigure some remote backup servers, that the clients keep at home, when updates had to be made to the network at their office.
When a remote user runs the VNC client, they are the ones who then have to start the connection, so there is no way for me to see their desktop, unless they are there in front of the machine. Once the connection is up, they can leave me to work on the machine. When the session is ended, they just have to quit the client, to be sure that their desktop cannot be viewed anymore.