CentOS Stream 10 with the GNOME desktop, reached over RDP: no default password, remote desktop switched off until you turn it on, and a per VM RDP credential generated at first boot.
CentOS Stream 10 with GNOME Desktop is CentOS Stream 10, the free, continuously delivered upstream of Red Hat Enterprise Linux 10, with the distribution's own desktop added: the AppStream environment group that CentOS calls Server with GUI. GNOME Remote Desktop is set up for remote login, so you connect with any RDP client, the GNOME login screen appears, and you sign in to a full desktop session running on the virtual machine, with Files, the Ptyxis terminal, Firefox, Text Editor, Calculator, Software and System Monitor ready to use.
It suits a graphical workstation for tracking and testing against the next RHEL 10 update ahead of its general availability, engineering and data tools that should run close to your cloud resources, training labs that need a RHEL compatible desktop, and a secure jump desktop reached only through an SSH tunnel. The session is Wayland, because RHEL 10 removed the Xorg server; Xwayland runs X applications as normal. CentOS Stream is rolling, so dnf always moves you to the current stream, and anything else you need installs the same way.
cloudimg builds the desktop so that a new machine exposes nothing but SSH. Remote desktop ships switched off, the Cockpit console that the stock CentOS Stream cloud image leaves listening is switched off too, no account has a password, and the RDP server cannot be enabled until you have set your own. At first boot each machine generates its own RDP credential and its own TLS certificate, readable by root only, so nothing is shared between machines or baked into the image. A single helper command shows the remote desktop state, turns it on and off, and prints this machine's credential. The operating system disk is sized for a desktop rather than a headless server, SELinux stays in enforcing mode, SSH stays key only even after you set a desktop password, the debug kernel the stock image carries is removed, every available update is applied at build time, and dnf-automatic is armed for security updates, all backed by 24/7 support.
Real screenshots taken while testing this image against its deployment guide.