VNC
Siehe auch
Alternative zu VNC-Server: GNOME Remote Desktop
VNC-Clients: Remmina, UltraVNC
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:
- 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):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
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:
[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
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.
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-11-18