Introduction
I am a rather new user of Ubuntu, and I'm trying to set up remote desktop access to my Ubuntu 22.04 in a specific way. I have tried both native GNOME Remote Desktop and XRDP; however, I have not been able to reach the desired behaviour which is the following.
When I work on my Ubuntu desktop, I need to switch between working physically on-site on the desktop and remotely working on the desktop. More importantly, I need to switch between working on-site and remotely without logging out of the user session. Therefore, I need to remote access the running user session on the remote Ubuntu desktop preferably not by a "screen mirror" method. (The same way as you can access the running user session on Windows using Windows RDP.)
Remote access options
I have looked into both the native Remote desktop in Ubuntu 22.04 (GNOME Remote Desktop) and XRDP. If I understand them correctly, they both have disadvantages which prevent me from using them for my specific remote access needs. Please see the overview of the remote access options below, and correct me if I am wrong in something.
GNOME Remote Desktop (GRD)
GNOME Remote Desktop supports a "screen share", also known as "remote assistance" mode, through VNC or RDP. This means that when you connect to the remote desktop using GNOME Remote Desktop, you connect to the existing session of the currently logged user, and you only see a mirrored screen of the user on remote desktop and you can control his mouse and keyboard. It is very similar to Anydesk or Chrome Remote Desktop. The remote desktop can be configured to either of the following:
- Screen mirror only. This can be achieved by setting Remote Desktop "ON" and Remote Control is "OFF" on the remote desktop.
- Full screen share (screen mirror + mouse & keyboard control). This can be achieved by setting Remote Desktop "ON" and Remote Control "ON" on the remote desktop.
Advantages:
- You can connect to an existing session of the user logged on the remote desktop without disrupting it (i.e. without disrupting running processes), see why it is important.
- The GUI is exactly the same as on the remote desktop because you are seeing the exact copy of the remote screen.
Disadvantages:
- The remote desktop must be connected to a monitor, and the monitor must be turned on. Otherwise, there would be no screen to mirror back to you.
- The remote access is much less seamless (compared to, e.g., XRDP) due to the screen mirror. Specifically, when opening and closing windows, the picture is laggy and blurry.
- Anyone who has physical access to the remote desktop can see what you are doing on the remote desktop, and it it not possible to protect your computer from a local physical intrusion.
The third disadvantage can be partially solved by tweaking various settings but the first two disadvanatages remain.
XRDP
XRDP is very different from GNOME Remote Desktop and similar to Windows RDP. When you remote access the remote desktop using XRDP, you create a new session (log as a new user). The new session acts as a "virtual machine" accesible only to you, which means that whatever you do in the session can only be seen in your client desktop. On the remote desktop, only login screen is visible, and it looks like nothing is happening.
Advantages:
- The remote desktop does not have to be connected to a monitor because the "virtual machine" is created specifically for your client monitor.
- The remote access is so seamless that you can not even notice that you are working on remtoe desktop and not local desktop. Specifically, even when opening and closing windows, the picture is super fast and clean.
- No one (even with physical access to the remote desktop) can see what you are doing on the remote desktop.
Disadvantages:
- On the remote desktop, all users must be logged out. Thus, you can not connect to an existing session of the user logged on the remote desktop.
- The GUI created by XRDP is different from the standart GUI of the remote desktop and it is very user unfriendly.
These disadvantages can be partially resolved by tweaking various settings as can be seen in the links above. However, even after this tweaking, some disadvantages remain.
Windows RDP
Windows RDP cannot be used on Ubuntu (as far as I know), but I present it here because it has the exact functionality that I am looking for.
Windows RDP is similar XRDP. As in the case of XRDP, when you connect to the remote desktop you create a "virtual machine" accesible only to you, which means that whatever you do in the session can only be seen in your client desktop. However, unlike XRDP, Windows RDP allows you to both create a new session (log as a new user) as well as connect to the existing session of the currently logged user. On the remote desktop, the currently logged user is locked out of his account but not logged out which means that the running processes are not disrupted!
Advantages:
- You can connect to an existing session of the user logged on the remote desktop without disrupting it (i.e. without disrupting running processes).
- The GUI is exactly the same as on the remote desktop.
- The remote desktop does not have to be connected to a monitor because the "virtual machine" is created specifically for your client monitor.
- The remote access is super seamless.
- No one (even with physical access to the remote desktop) can see what you are doing on the remote desktop.
Disadvantages:
- none?
As I have come to understand, Windows RDP combines the advantages of both GRD and XRDP without having any of their disadvantages.
My question
When I connect from Ubuntu client to Ubuntu remote desktop, Remmina uses the GRD or XRDP on the remote side and this has the abovementioned disadvantages. However, when I connect from Ubuntu client to Windows remote desktop, Remmina uses the Windows RDP on the remote side and everything is satisfactory.
Is there a way to achieve the desired behaviour for connecting from Ubuntu client to Ubuntu remote desktop?
I would be very grateful for any tips or links to relevant tutorials :)
EDIT 1:
This reddit question (and especially this comment) also nicely describe my problem.
EDIT 2:
I am currently using NoMachine to connect to the remote desktop. Although it is a "screen share" remote access (same as GRD and Anydesk) it does solve the "local physical intrusion" disadvantage by blanking the screen for local user and blocking local inputs. It also partially solves the "seamless" disadvantage. NoMachine is more seamless than GRD or Anydesk. However, since it still is a screen share remote access, it is much less seamless than XRDP or Windows RDP. In future, I may try Vino VNC or RealVNC as recommended by others in hopes that though still a screen share, it will be more seamless.