Recentemente eu tenho lutado com o VNC em um Raspberry Pi. Eu tenho erros semelhantes como você no lado do cliente. Decidi instalar o TightVNCserver em vez do padrão, já que o TightVNC recebeu muitas boas críticas. Você pode instalar o TightVNC no seu servidor (sudo apt-get install tightvncserver). Primeiro pare o outro software do servidor VNC ou remova-o. Em seguida, para testar o TightVNC, efetue login como usuário normal e defina uma senha do VNC.
$ tightvncpasswd
Depois disso, comece tightvnc como usuário normal em seu servidor.
$ tightvncserver
Isso iniciaria o VNC no seu servidor.
Em seguida, na sua máquina local, faça o seguinte para criar um túnel ssh:
$ ssh -v nome de usuário remoto @ nome do host remoto -L 5901: localhost: 5901
Isso é necessário porque o VNC é executado no localhost por padrão, mas também é necessário para evitar o tráfego de texto sem formatação.
Depois disso, inicie o cliente Remmina e configure-o para conectar-se ao host local: 5901 com o nome de usuário remoto e a senha VNC que você criou.
Quando esse teste funciona bem, você pode continuar criando um script de inicialização para o tempo de inicialização em seu servidor ou decida usá-lo manualmente após cada reinicialização.
Além do VNC, o x2go é, na minha opinião, mais agradável e fácil de usar. Uma solução muito legal para um desktop remoto. O X2go está disponível nos repositórios do Ubuntu. Para mais informações, dê uma olhada aqui: