Free to locally connect, paid for service for remote access, but not painfully priced, that will let you connect to remote RPi’s via the desktop without needing to configure the local router to allow incoming connections.
https://www.realvnc.com/en/raspberrypi/
Setup on the RPi
RealVNC Server is included with Raspberry Pi OS.
Start > Preferences > Raspberry Pi Configuration > Interfaces > VNC = On
You should then get the RealVNC server icon in your top bar (next to the Bluetooth icon). Open it
Press the hamburger menu button (3 lines) > Licencing > Enter your RealVNC account username and password
Press Next (Leave allow cloud and direct connections checked)
Press Next (UNIX password and Encryption always on selected)
Press Next (Administrators can connect selected)
Enter a name for this system (how it will appear in the Real VNC portal)
RPi5 special note – see below
Running on devices without a keyboard and mouse connected
You will need to install another entropy generator such as haveged, which you can install by running this command:
sudo apt install haveged
Running on devices with no monitor connected
You need to set a resolution that the RPi will use when there is no monitor connected:
sudo raspi-config
Display options > VNC resolution
RPi5 issue late 2023
There’s an issue with RealVNC support for the default Raspberry Pi OS currently, to be resolved – details here.
You must be running the 64bit OS (shown on the startup splash screen).
First ensure that VNC is turned off in Start > Preferences > Raspberry Pi Configuration > Interfaces
On the command line run
sudo raspi-config
Advanced Options > Wayland > Select X11 instead of the default Bookworm.
After your RPi reboots you will now be able to turn on VNC and see RealVNC run/appear.