VPS auf Linux mit einer grafischen Benutzeroberfläche: Wir richten einen VNC-Server auf Ubuntu 18.04 ein

VPS auf Linux mit einer grafischen Benutzeroberfläche: Wir richten einen VNC-Server auf Ubuntu 18.04 ein
Einige Benutzer mieten relativ kostengünstige VPS mit Windows, um einen Remote-Desktop-Dienst auszuführen. Dasselbe kann auch unter Linux gemacht werden, ohne eigene Hardware in einem Rechenzentrum zu hosten oder einen dedizierten Server zu mieten. Manche benötigen eine gewohnte grafische Umgebung für Tests und Entwicklung oder einen Remote-Desktop mit einer breiten Bandbreite, um von mobilen Geräten aus zu arbeiten. Es gibt zahlreiche Anwendungsmöglichkeiten für die auf dem Remote FrameBuffer (RFB) Protokoll basierende Virtual Network Computing (VNC) Systeme. In einem kurzen Artikel erklären wir, wie man es auf einer virtuellen Maschine mit jedem Hypervisor einrichtet.

Inhaltsverzeichnis:

VNC-Serverauswahl
Installation und Konfiguration
Dienst über systemd starten
Verbindung zum Desktop

VNC-Serverauswahl

Der VNC-Dienst kann in das Virtualisierungssystem integriert werden, wobei der Hypervisor ihn mit den emulierten Geräten verbindet, sodass keine zusätzliche Konfiguration erforderlich ist. Diese Option hat jedoch erhebliche Kosten für die Ressourcennutzung und wird von nicht allen Anbietern unterstützt – selbst in weniger ressourcenintensiven Umsetzungen, in denen anstelle der Emulation eines realen Grafikgerätes der virtuellen Maschine eine vereinfachte Abstraktion (FrameBuffer) übergeben wird. Manchmal wird der VNC-Server an einen laufenden X-Server gebunden, aber diese Methode ist eher für den Zugriff auf physische Maschinen geeignet, während sie auf virtuellen Maschinen mehrere technische Probleme verursacht. Am einfachsten ist es, einen VNC-Server mit integriertem X-Server zu installieren. Dies erfordert keine physischen Geräte (Grafikkarte, Tastatur und Maus) oder deren Emulation durch den Hypervisor, was es für VPS aller Art geeignet macht.

Installation und Konfiguration

Wir benötigen eine virtuelle Maschine mit Ubuntu Server 18.04 LTS in der Standardkonfiguration. In den Standard-Repositorys dieser Distribution sind mehrere VNC-Server verfügbar: (eine veraltete plattformübergreifende Version wurde getestet, da die aktuelle Version 2.x nur für Windows herausgegeben wird), wurden 4 Schwachstellen gefunden. Drei Probleme (, TigerVNC, x11vnc und andere. Wir haben uns für TigerVNC entschieden – einen aktuellen Fork des nicht mehr unterstützten TightVNC. Die Einrichtung anderer Server erfolgt auf ähnliche Weise. Außerdem muss eine Desktop-Umgebung ausgewählt werden: unserer Meinung nach wäre XFCE aufgrund der vergleichsweise geringen Anforderungen an die Rechenressourcen die optimale Wahl. Wer möchte, kann eine andere DE oder WM installieren: hier hängt alles von den persönlichen Vorlieben ab, jedoch beeinflusst die Softwarewahl direkt den Bedarf an RAM und Rechenkernen.

VPS auf Linux mit einer grafischen Benutzeroberfläche: Wir richten einen VNC-Server auf Ubuntu 18.04 ein

Die Installation der Desktop-Umgebung mit allen Abhängigkeiten erfolgt mit dem folgenden Befehl:

sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

Als Nächstes muss der VNC-Server installiert werden:

sudo apt-get install tigervnc-standalone-server tigervnc-common

Es ist keine gute Idee, ihn mit Administratorrechten zu starten. Erstellen Sie einen Benutzer und eine Gruppe:

sudo adduser vnc

VPS auf Linux mit einer grafischen Benutzeroberfläche: Wir richten einen VNC-Server auf Ubuntu 18.04 ein

Fügen wir den Benutzer zur sudo-Gruppe hinzu, damit er administrativen Aufgaben nachkommen kann. Wenn dies nicht nötig ist, kann dieser Schritt übersprungen werden:

sudo gpasswd -a vnc sudo

Im nächsten Schritt muss der VNC-Server mit den Rechten des Benutzers vnc gestartet werden, um ein sicheres Passwort und Konfigurationsdateien im Verzeichnis ~/.vnc/ zu erstellen. Die Passwortlänge kann zwischen 6 und 8 Zeichen liegen (Extras werden abgeschnitten). Falls nötig, kann auch ein Passwort nur für den View-Only-Zugriff festgelegt werden, d.h. ohne Zugriff auf die Tastatur und Maus. Die folgenden Befehle werden im Namen des Benutzers vnc ausgeführt:

su - vnc
vncserver -localhost no

VPS auf Linux mit einer grafischen Benutzeroberfläche: Wir richten einen VNC-Server auf Ubuntu 18.04 ein
Standardmäßig verwendet das RFB-Protokoll einen Bereich von TCP-Ports von 5900 bis 5906 – dies sind die sogenannten Display-Ports, von denen jeder einem X-Server-Bildschirm entspricht. Dabei sind die Ports den Bildschirmen von :0 bis :6 zugeordnet. Unser gestarteter VNC-Server hört auf Port 5901 (Bildschirm :1). Weitere Instanzen können auf anderen Ports mit den Bildschirmen :2, :3 usw. laufen. Bevor wir mit der weiteren Konfiguration fortfahren, müssen wir den Server stoppen:

vncserver -kill :1

Der Befehl sollte eine Nachricht in etwa folgendermaßen ausgeben: „Killing Xtigervnc process ID 18105… success!“.

Beim Start von TigerVNC wird das Skript ~/.vnc/xstartup ausgeführt, um die Konfigurationseinstellungen vorzunehmen. Lassen Sie uns unser eigenes Skript erstellen, nachdem wir eine Sicherungskopie des bestehenden Skripts angefertigt haben, falls es existiert:

mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartup

Die Desktop-Umgebungssitzung XFCE wird mit folgendem xstartup-Skript gestartet:

#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &

Der Befehl xrdb ist notwendig, damit das VNC-System die Datei .Xresources im Home-Verzeichnis liest. Dort kann der Benutzer verschiedene Parameter des grafischen Desktops festlegen: Schriftarten-Rendering, Terminalfarben, Mausthemen usw. Das Skript muss ausführbar gemacht werden:

chmod 755 ~/.vnc/xstartup

Damit ist die Konfiguration des VNC-Servers abgeschlossen. Wenn Sie ihn mit dem Befehl vncserver -localhost no (im Namen des Benutzers vnc) starten, können Sie sich mit dem zuvor festgelegten Passwort verbinden und sehen, dass:

VPS auf Linux mit einer grafischen Benutzeroberfläche: Wir richten einen VNC-Server auf Ubuntu 18.04 ein

Dienst über systemd starten

Das manuelle Starten des VNC-Servers eignet sich schlecht für den produktiven Einsatz, deshalb richten wir einen Systemdienst ein. Die Befehle werden im Namen von root ausgeführt (verwenden Sie sudo). Zunächst erstellen wir eine neue Einheitendatei für unseren Server:

sudo nano /etc/systemd/system/vncserver@.service

Das @-Zeichen im Namen ermöglicht es, ein Argument zur Konfiguration des Dienstes zu übergeben. In unserem Fall legt es den VNC-Display-Port fest. Die Einheitendatei besteht aus mehreren Abschnitten:

[Unit]
Description=TigerVNC-Server
After=syslog.target network.target

[Service]
Type=simple
User=vnc 
Group=vnc 
WorkingDirectory=/home/vnc 
PIDFile=/home/vnc/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x960 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

Dann müssen Sie systemd über das neue Dateisystem informieren und es aktivieren:

sudo systemctl daemon-reload
sudo systemctl enable vncserver@1.service

Die Zahl 1 im Namen gibt die Bildschirmnummer an.

Wir stoppen den VNC-Server, starten ihn als Dienst und überprüfen den Status:

# от имени пользователя vnc 
vncserver -kill :1

# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1

Wenn der Dienst läuft, sollten wir ein ähnliches Ergebnis erhalten.

VPS auf Linux mit einer grafischen Benutzeroberfläche: Wir richten einen VNC-Server auf Ubuntu 18.04 ein

Verbindung zum Desktop

Unsere Konfiguration verwendet keine Verschlüsselung, daher können Netzwerkpakete von Angreifern abgefangen werden. Außerdem finden sich bei VNC-Servern häufig Schwachstellen, deshalb sollten sie nicht für den Zugriff aus dem Internet geöffnet werden. Für eine sichere Verbindung am lokalen Computer sollte der Datenverkehr in einem SSH-Tunnel verpackt werden, und dann den VNC-Client konfigurieren. Unter Windows kann ein grafischer SSH-Client (z. B. PuTTY) verwendet werden. Zur Sicherheit horcht TigerVNC auf dem Server nur auf localhost und ist nicht direkt aus öffentlichen Netzwerken zugänglich:


sudo netstat -ap |more

VPS auf Linux mit einer grafischen Benutzeroberfläche: Wir richten einen VNC-Server auf Ubuntu 18.04 ein
Unter Linux, FreeBSD, OS X und anderen UNIX-ähnlichen Betriebssystemen wird der Tunnel vom Client-Computer mittels des ssh-Tools erstellt (auf dem VNC-Server muss sshd ausgeführt werden):

ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ip

Die Option -L bindet den Port 5901 der Remote-Verbindung an den Port 5901 von localhost. Die Option -C aktiviert die Kompression, und -N teilt dem ssh-Tool mit, dass kein Remote-Befehl ausgeführt werden soll. Die Option -l legt den Login für den entfernten Systemzugang fest.

Nach der Konfiguration des Tunnels muss der VNC-Client auf dem lokalen Computer gestartet und eine Verbindung zum Host 127.0.0.1:5901 (localhost:5901) hergestellt werden, wobei das zuvor festgelegte Passwort für den Zugriff auf den VNC-Server verwendet wird. Jetzt können wir sicher über den verschlüsselten Tunnel mit der Desktop-Umgebung XFCE auf dem VPS interagieren. Im Screenshot des Terminalemulators ist das Tool top gestartet, um den geringen Ressourcenverbrauch der virtuellen Maschine zu zeigen. Von hier an hängt alles von den Benutzeranwendungen ab.

VPS auf Linux mit einer grafischen Benutzeroberfläche: Wir richten einen VNC-Server auf Ubuntu 18.04 ein
Einen VNC-Server unter Linux auf nahezu jedem VPS einzurichten und zu konfigurieren, ist problemlos möglich. Dazu sind keine kostspieligen und ressourcenintensiven Konfigurationen mit Video-Adapter-Emulation oder der Erwerb kommerzieller Software-Lizenzen erforderlich. Neben der bereits behandelten Option des Systemdienstes gibt es auch andere: den Start im Daemon-Modus (über /etc/rc.local) beim Booten des Systems oder auf Abruf über inetd. Letzteres ist interessant für die Erstellung von Mehrbenutzerkonfigurationen. Der Internet-Superserver startet den VNC-Server und verbindet ihn mit dem Client, während der VNC-Server einen neuen Bildschirm erstellt und eine Sitzung beginnt. Für die Authentifizierung innerhalb dieser Sitzung kann ein grafischer Anmelde-Manager verwendet werden (zum Beispiel, LightDM), und nach der Trennung des Clients wird die Sitzung geschlossen und alle Programme, die mit dem Bildschirm arbeiten, beendet.

VPS auf Linux mit einer grafischen Benutzeroberfläche: Wir richten einen VNC-Server auf Ubuntu 18.04 ein

Quelle: habr.com

60GB SSD 8Gb DDR4