Skip to content

Instantly share code, notes, and snippets.

@rexlx
Created August 1, 2020 17:20
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rexlx/57b5a0ce212976dac0f237776976eb23 to your computer and use it in GitHub Desktop.
Save rexlx/57b5a0ce212976dac0f237776976eb23 to your computer and use it in GitHub Desktop.
TigerVNC on CentOS 8

What has changed

The previous Tigervnc versions had a wrapper script called vncserver which could be run as a user manually to start Xvnc process. The usage was quite simple as you just run

$ vncserver :x [vncserver options] [Xvnc options]

and that was it. While this was working just fine, there were issues when users wanted to start a Tigervnc server using systemd. For these reasons things were completely changed and there is now a new way how this all is supposed to work.

 # How to start Tigervnc server  

Add a user mapping

With this you can map a user to a particular port. The mapping should be done in /etc/tigervnc/vncserver.users configuration file. It should be pretty straightforward once you open the file as there are some examples, but basically the mapping is in form

:x=user

For example you can have

:1=test
:2=vncuser

Configure Xvnc options

To configure Xvnc parameters, you need to go to the same directory where you did the user mapping and open vncserver-config-defaults configuration file. This file is for the default Xvnc configuration and will be applied to every user unless any of the following applies:

  • The user has its own configuration in $HOME/.vnc/config
  • The same option with different value is configured in   vncserver-config-mandatory configuration file, which replaces the default   configuration and has even a higher priority than the per-user configuration.   This option is for system administrators when they want to force particular   Xvnc options.

Format of the configuration file is also quite simple as the configuration is in form of

option=value
option

for example

session=gnome
securitytypes=vncauth,tlsvnc
desktop=sandbox
geometry=2000x1200
localhost
alwaysshared

Note:

There is one important option you need to set and that option is the session you want to start. E.g when you want to start GNOME desktop, then you have to use

session=gnome

which should match the name of a session desktop file from /usr/share/xsessions directory.

Set VNC password

You need to set a password for each user in order to be able to start the Tigervnc server. In order to create a password, you just run

$ vncpasswd

as the user you will be starting the server for.

Note:

If you were using Tigervnc before for your user and you already created a password, then you will have to make sure the $HOME/.vnc folder created by vncpasswd will have the correct SELinux context. You either can delete this folder and recreate it again by creating the password one more time, or alternatively you can run

$ restorecon -RFv /home/<USER>/.vnc

Start the Tigervnc server

Finally you can start the server using systemd service. To do so just run

$ systemctl start vncserver@:x

as root or

$ sudo systemctl start vncserver@:x

as a regular user in case it has permissions to run sudo. Don't forget to replace the :x by the actual number you configured in the user mapping file. Following our example by running

$ systemctl start vncserver@:1

you will start a Tigervnc server for user test with a GNOME session.

Note:

If you were previously using Tigervnc and you were used to start it using systemd then you will need to remove previous systemd configuration files, those you most likely copied to /etc/systemd/system/vncserver@.service, otherwise this service file will be preferred over the new one installed with latest Tigervnc.

Limitations

You will not be able to start a Tigervnc server for a user who is already logged into a graphical session. Avoid running the server as the root user as it's not a safe thing to do. While running the server as the root should work in general, it's not recommended to do so and there might be some things which are not working properly.

@singr089
Copy link

singr089 commented May 4, 2021

Hi, I tried same thing in for my VM and my service is not starting..

● vncserver@:2.service - Remote desktop service (VNC)
Loaded: loaded (/usr/lib/systemd/system/vncserver@.service; enabled; vendor >
Active: inactive (dead) since Tue 2021-05-04 06:20:49 PDT; 22s ago
Process: 153029 ExecStart=/usr/libexec/vncsession-start :2 (code=exited, stat>
Main PID: 153035 (code=exited, status=0/SUCCESS)

May 04 06:20:49 mumbai58310 systemd[1]: Starting Remote desktop service (VNC)...
May 04 06:20:49 mumbai58310 systemd[1]: Started Remote desktop service (VNC).
May 04 06:20:49 mumbai58310 systemd[1]: vncserver@:2.service: Succeeded.

Cna you please help me with this..

@singr089
Copy link

singr089 commented May 4, 2021

#/etc/tigervnc/vncserver-config-defaults


session=gnome
securitytypes=vncauth,tlsvnc
desktop=sandbox
geometry=2000x1200
localhost
alwaysshared

/etc/tigervnc/vncserver.users


:1=rajkis
:2=rajkis

@rexlx
Copy link
Author

rexlx commented May 4, 2021

I'm not sure what state tigervnc is in, but I've seen very little support for it recently. I've switched to RDP instead of VNC. I have it running without issues on ubuntu and redhat. the package name for the RDP server is "xrdp", just google RDP client for whatever OS you're running client side.

If you're not convinced about the security of the RDP protocol, i can show you how to pipe it through an encrypted ssh tunnel.
Screen Shot 2021-05-04 at 8 28 00 AM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment