Image Source: Pexels
With the rapidly changing workflows and remote work becoming a staple, companies look for solutions to provide their employees and partners a decent work infrastructure while they are working remotely, while maintaining a centralized IT crew that can attend to the users at a fast pace, with minimum downtime.
Global Workplace Analytics forecasts that 56% of jobs in the United States will have various aspects of remote work in the upcoming years. It is expensive to buy equipment and to provide support to every remote worker. The BYOD philosophy may help to cut down some costs, but security issues, hardware, and software incompatibility, and other problems may arise from this practice. Besides, imagine you are investigating how to troubleshoot multiple issues for the IT team.
Linux remote desktop with third-party software help can greatly assist in centralizing your IT crew while providing a standard desktop experience for all your employees and partners. Even if your employees are not working remotely, a centralized remote desktop server could ensure you fewer maintenance costs because you could use simple computers as clients to access powerful centralized servers. For those reasons, you should consider remote desktop software instead of only providing standalone devices that may be difficult to manage when they are being used remotely.
Let's explore the concept of remote access in more detail and find the best ways to seamlessly access your Linux remote desktop.
Image source: Freepik
The basic definition of remotely connecting to Linux is that the machine running Linux is accessed through a network, either an internal network or via the internet. Simply put, a Linux remote desktop is all about a user having a complete desktop session experience that is running remotely on a Linux machine.
A remote desktop connection can be established through a particular software. It offers access to a remote device along with all its aspects as if the user is sitting right in front of the remote machine. From now on, we are going to refer to the remote machine being accessed as a “server” and the machine that is used to connect to the server is the “client”.
Remember, the “server” doesn't necessarily have to be a brand powerful new supercomputer, it may be a simple desktop computer running the server application that allows the remote connection. The hardware requirements will depend on which applications will be used and how many people will use it simultaneously.
When you are interactively connecting to a server Linux machine, there are two basic methods that will let you interact with it:
CUI stands for Character User Interface, also known as CLI (Command-Line Interface) and more commonly known as the “command line”, “shell” or “prompt”. It is fully text-based.
GUI is an abbreviation for Graphical User Interface, which allows the visualization of graphical elements, such as application interfaces and desktops.
SSH (Secure Shell) is a straightforward alternative for accessing Linux remotely. An SSH connection can easily be established directly from the Linux terminal shell or through an SSH client. SSH is a widely known open-source protocol. It is widely used because of both its simplicity and security.
The "server" (remote machine which we are going to connect to) should run an application such as "OpenSSH Server" and the "client" (the machine that is in front of the user) should run an application such as "OpenSSH Client", "Putty", "Tunnelier", etc.
Some applications allow users to get graphical software running remotely. Some will provide a single app window that is being executed on the server while its GUI window that interacts and is displayed on the client computer. Moreover, some allow for a full desktop session experience.
Unlike SSH, which is a widely adopted protocol to connect to Linux machines remotely through CLI, there are a lot of different protocols and software for accessing a Linux server and getting a GUI, each one of them with pros and cons. To name a few, we have the SSH itself (also capable of forwarding graphics through X11 forwarding), ThinLinc, VNC, Moonlight/Sunshine, Spice, NoMachine, MeshCentral, XFreeRDP, X2Go, NiceDCV, etc.
For this article, we refer to Linux Remote Desktop software as a solution that allows the provision of Linux Desktops remotely to users. Some of them will even allow multiple users at the same time. This specific type of software not only provides GUI access to the end-users but brings session management capabilities, allowing faster and easy deployments and some of them can also provide sound through the network, peripheral redirection, etc…
So, what should you be looking for when you're searching for a Linux Remote Desktop solution? Here are a few key features that are important on the remote desktop solutions:
If you are looking for a tool that has all the above key features, look no more, ThinLinc is the answer.
Image source: ThinLinc
ThinLinc is one fine example of a Linux Remote Desktop Server solution. ThinLinc is developed by Cendio in Sweden, one of the oldest Linux-centric companies in the world. ThinLinc can be categorized under the VNCs; however, ThinLinc is not limited to VNC, as it provides much more. The main differences are sound; image quality and responsiveness; security; easy configuration, redundancy, load balance, and high availability. Here you find a comparison of ThinLinc and VNC.
ThinLinc packages well-known open-source components and orchestrates them in a way that makes it easy for the sysadmins to provide access to Linux systems remotely.
Under the hood, ThinLinc is based on the following well known open-source projects:
All the key features are met by ThinLinc:
ThinLinc is a tool currently used by universities, high-tech, and manufacturing industries. The use cases aim to provide a seamless experience with a Linux remote desktop.
You can start deploying your ThinLinc Server using one of these three options:
Following one of the above will get your ThinLinc Remote Desktop Server up and running
Using ThinLinc for remote access grants a range of benefits:
These features make ThinLinc perfect for both enterprise, startup-level and also enthusiast or home-grade clients.
Even though ThinLinc is a perfect solution for enterprises, there are still some aspects to consider:
Thinking of the abovementioned elements, ThinLinc is focused on providing a great remote session desktop experience for its users.
So, we learned about ThinLinc features, pros, and cons. Can we talk a little about the alternatives? Sure! Let's discuss some of them!
Let's start talking about the Windows Remote Desktop Protocol, also known as RDP. This native Windows protocol allows users to remotely access a Windows Machine and have a remote desktop session experience. It is pretty similar to what ThinLinc does on Linux, but has a crucial limitation by Microsoft: Windows only allows for one user connected at a time on Pro versions of Windows!
It means that if someone else is logged in, you have to ask for permission to connect to it. A message will be displayed to the other user asking whether he/she allows or denies your access. If allowed, his/her session will be locked, and you will gain access and will be prompted to decide for every new attempt of connection on that machine.
The only way to have multiple users simultaneously is to install Windows Server and buy CALs, which costs a lot. As an alternative, you may get an RDP server running on a Linux Machine by using XRDP, but then, you'll not be providing access to a Windows desktop, but to a Linux desktop instead.
Image source: Freepik
Remote access can be established through SSH, commonly for text-based access. But there's a feature that SSH you can turn on that allows SSH to forward an X11 window over an SSH connection, by using -X or -Y arguments: called the X11 Forwarding. It is simple and reliable for opening a single graphical window running remotely over SSH, but it is not very well optimized and will suffer if you don't have enough bandwidth or low latency.
Image source: Freepik
Virtual Network Computing (VNC) is a protocol that enables clients to connect to a particular server with a further option of interacting with the remote machine desktop. As an open-source instrument, VNC based Server and Client applications are available to Linux, Windows, and Mac.
VNC may be configured in two distinct ways: one that mirrors the local output of the remote machine's screen, and another method that allows the user to get a virtual remote desktop session.
On the first method, the client will get to see the remote machine's local screen, sharing the keyboard and mouse inputs.
The second method is more similar to ThinLinc's behavior. By default, the VNC connection is established on TCP port 5900. But in the "virtual remote desktop session" mode each new user will have to connect to port 5900+N, where N is the number of the user connecting, example: 5901, 5902… So, a VNC server providing virtual desktops running behind a firewall will need to have many ports open and listening, one for each user.
But don't make a mistake: VNC is the name of the protocol. To use it, you need to get an application such as TurboVNC, TigerVNC, among others.
Cendio, the company behind ThinLinc maintains two well-known FOSS VNC applications: TigerVNC and noVNC. Notably, ThinLinc uses TigerVNC as one of its major components and serves as maintenance of this open-source tool.
X2Go is a FOSS remote desktop software based on the 3.x version of NX libraries. The NX Technology is the base of the NoMachine remote desktop solution and the versions prior to release 4.0 have been released under GNU General Public License. X2Go is then based on these libraries and provides either a full virtual remote desktop session with sound or a single app window running remotely. Similar to ThinLinc, it does have sound forwarded to the client and the connection is also through the SSH port.
And starting with AnyDesk, we enter another class of Remote Desktop software. AnyDesk (and TeamViewer, Mesh Central, etc.) are software examples that only provide a way to mirror the local screen and interact with a local running session of the remote machine.
This kind of software works very similar to VNC configured for sharing a local session instead of providing an independent full desktop session. They are more oriented to support, help desk or remote control computers responsible for displaying information on remote places.
With AnyDesk (as similar to TeamViewer), the client/server structure is changed for a single application that is both capable of sharing the local session or accessing a remote machine. Each machine running AnyDesk has a unique ID that you may use to access it from another machine running AnyDesk.
Mesh Central is another class of remote desktop software. It is a centralized server that connects to the remote machines through an agent installed on them. A remote machine running the agent will allow the Mesh Central server to send commands or files in the background and also share its screen to let a Mesh Central user to interact with the local screen of the remote machine, similar to AnyDesk or TeamViewer.
The main difference is that there is no client for Mesh Central to connect to a remote machine. Instead, a user should connect to the Mesh Central server using a web browser and inside the website, the user is allowed to choose a remote machine and control it, similar to Apache Guacamole. The difference between Mesh Central and Apache Guacamole is that Mesh Central uses its agent and Apache Guacamole can use different protocols to connect to remote machines.
Steam Link is not oriented for "Remote Desktop" usage, but for gaming. Anyway, it is possible to use Steam Link as a Remote Desktop software, just by minimizing the Steam Client and you will get to see the Desktop Session.
It will act by letting you interact with a remote screen running on the remote machine. And another class of remote connection software arises: Software products oriented for responsiveness and faster frames that allow remote gameplay. To provide better FPS to the client, image quality may suffer from artifacts or low-quality samples just to keep high FPS.
Since Steam Link is focused on gaming capabilities instead of being a remote desktop solution, you can combine it with ThinLinc to achieve faster FPS and gaming capabilities from inside a ThinLinc remote session.
As you can see, there are different ways of connecting to a remote machine running Linux. Different solutions also imply different features. We can put the remote desktop solutions in two main categories:
The first category focuses on allowing the IT crew to provide users a standard and centralized desktop session experience from remote clients, as if the clients were sitting in front of the remote machine.
The second category is more oriented for remote user support or remote operation of machines. Since you're going to view and interact with a session already running on the remote machine or remote controlling it, no multi-session is possible.