There's couple of solutions. Ubuntu comes with Remina, remote desktop client, which I've never used, so someone else will cover that. Alternative to that frequently (if not mostly) used for remote connections is ssh
.
Let's say your home computer is going to be server
. It will need to have open-ssh
installed , so before you can connect , do
sudo apt-get install openssh-server
Your computer at work will be client
. If they were both at home, you would connect to it like so
ssh -X [email protected]
However, between your home computer and your work computer there is your home router. That means you have to make your router to politely guide connection from client to your server. Otherwise , the router will be a mean security guard who let's only VIPs into your home network.
What you need to do is have port forwarding set up on the router itself. For the router that means: "Whenever I, the router will see someone trying connect to me at port 22, I will need to guide it to that specific machine on port 22". Every router is different, but overview of how to set this up you can find here
Of course, the big draw back is that you have to know your home IP address. And it's a big draw back because ISP periodically changes IP addresses of the routers. You could sign up for noip DNS service (which is free by the way), which will basically assign a domain to your router and no matter what you will always have that domain point to your router.
Once you log into your domain , like ssh -X [email protected]
you will now be able to run startx
xrdp
for this. Note that you'll have to adjust firewall, dyndns and port forwarding if not using cloud service like TeamViewer.