VNC

Siehe auch

VNC benötigt Firewall-seitig „Port-Nummer 5900/tcp plus Display-Nummer“. Um also Display 3 erreichen zu können, muss der Port 5903/tcp freigegeben werden. Wer in firewalld den Service-Name vnc-server verwendet, gibt automatisch die Ports 5900 bis 5903 frei.

VNC ist ein Klartext-Protokoll, kommt also ohne Sicherheitsmerkmale daher. Um die Kommunikation abzusichern und zu verschlüsseln, wird zum Verbindungsaufbau die -via-Option angegeben, damit der Netzwerkverkehr über SSH getunnelt wird.

Ab RHEL 7 werden Konfigurationsangaben in /etc/systemd/system/vncserver@.service gepflegt.

VNC-Server

TigerVNC

TigerVNC erlaubt Desktop Sharing sowie die Fernsteuerung eines Computers, ähnlich wie Anydesk, TeamViewer oder RDP. Ein vncviewer verbindet sich dabei zum vncserver und steuert diesen. Der vncserver-Desktop läuft unter Xvnc und erlaubt separate, parallele Benutzer-Sessions. In der Standard-Konfiguration wird nicht der bestehende Bildschirm geteilt, sondern eine neue VNC-Session.

Installation

dnf -y install tigervnc-server

Konfiguration RHEL8:

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/using_the_desktop_environment_in_rhel_8/accessing-the-desktop-remotely_using-the-desktop-environment-in-rhel-8#enabling-multi-user-vnc-access-on-the-server_remotely-accessing-the-desktop-as-multiple-users

Konfiguration der Benutzer. Diese werden im File /etc/tigervnc/vncserver.users verwaltet.

VNC wird pro Benutzer und Display-Nummer konfiguriert, im Beispiel für „linus“. (RedHat empfiehlt, als erste User Display-Nummer :2 zu verwenden)

/etc/tigervnc/vncserver.users
:2=linus

Der Benutzer „linus“ benötigt noch ein Passwort für den VNC-Service, welche unter keinen Umständen mit seinem Benutzerpasswort übereinstimmen sollte. Das Passwort wird durch die VNC-Tools im Klartext auf der Server-Maschine abgelegt.

su - linus
vncpasswd
*Password:*
*Verify:*

Weitere Einstellungen können in folgenden Files (in absteigender Priorität) gemacht werden.

  • /etc/tigervnc/vncserver-config-mandatory

  • $HOME/.vnc/config

  • /etc/tigervnc/vncserver-config-defaults

    Beispiel: Ein User möchte seine eigene Auflösung anpassen

    $HOME/.vnc/config
    geometry=1280x1024
    
Start des VNC-Servers wieder als root

Start des VNC-Servers beispielsweise auf Display 2 (damit ist Port 5902/tcp zu öffnen):

systemctl enable --now vncserver@:2

Anpassung Systemd Service File, damit die jeweilige VNC Session nach einem Logout des Users neustartet:

/usr/lib/systemd/system/vncserver@.service
[Service]
Restart=on-success
RestartSec=10

Konfiguration RHEL7:

Konfiguration für den ersten Benutzer

VNC wird pro Benutzer konfiguriert, im Beispiel für „linus“.

cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@.service
/etc/systemd/system/vncserver@.service
ExecStart=/sbin/runuser -l linus -c "/usr/bin/vncserver -localhost %i -geometry 1280x1024"
PIDFile=/home/USER/.vnc/%H%i.pid

Bemerkung

Wird -localhost entfernt, lässt der VNC-Server auch unverschlüsselte Verbindungen zu, was wir jedoch nicht empfehlen.

systemctl daemon-reload

Der Benutzer „linus“ benötigt noch ein Passwort für den VNC-Service, welche unter keinen Umständen mit seinem Benutzerpasswort übereinstimmen sollte. Das Passwort wird durch die VNC-Tools im Klartext auf der Server-Maschine abgelegt.

su - linus
vncpasswd
*Password:*
*Verify:*
Konfiguration für weitere Benutzer

Werden weitere Benutzer benötigt, muss pro Benutzer ein Unit-File vncserver-$USER@.service angelegt und obiges wiederholt werden.

Start des VNC-Servers

Start des VNC-Servers beispielsweise auf Display 2 (damit ist Port 5902/tcp zu öffnen):

systemctl start vncserver@:2.service
systemctl enable vncserver@:2.service

Um zwei Benutzer auf zwei verschiedenen Displays laufen zu lassen:

systemctl start vncserver-$USER1@:2.service
systemctl start vncserver-$USER2@:3.service

Authentifizierung via PAM (zum Beispiel für LDAP):

https://access.redhat.com/solutions/7028399

Sicherstellen, dass ein vnc PAM existiert.

test -f /etc/pam.d/vnc || ln -s login /etc/pam.d/vnc

Folgende Zeigen zur jeweiligen VNC Config der User hinzufügen.

$HOME/.vnc/config
SecurityTypes=TLSPlain
PlainUsers=linus

x11vnc

yum -y install x11vnc
x11vnc -ncache 10 -display :0 -geometry 1024x768 -rfbauth /home/user/.vnc/passwd

VNC-Viewer

TigerVNC

vncviewer lässt sich per GUI als auch von der Kommandozeile aus verwenden.

Installation:

dnf -y install tigervnc

Zu einem VNC-Server auf Display 3 verbinden:

vncviewer $VNCSERVER:3

Wie oben, aber über einen SSH-Tunnel verbinden:

vncviewer -via $USER@$VNCSERVER:3

Built on 2024-07-16