Einige Benutzer mieten einen relativ günstigen VPS mit Windows, um Remotedesktopdienste auszuführen. Das Gleiche ist unter Linux möglich, ohne dass Sie Ihre eigene Hardware in einem Rechenzentrum hosten oder einen dedizierten Server mieten müssen. Manche Menschen benötigen eine vertraute grafische Umgebung zum Testen und Entwickeln oder einen Remote-Desktop mit einem breiten Kanal für die Arbeit mit mobilen Geräten. Es gibt viele Optionen für die Verwendung des auf dem Remote FrameBuffer (RFB)-Protokoll basierenden Virtual Network Computing (VNC)-Systems. In diesem kurzen Artikel erklären wir Ihnen, wie Sie es auf einer virtuellen Maschine mit einem beliebigen Hypervisor konfigurieren.
Table of Contents:
Auswahl eines VNC-Servers
Der VNC-Dienst kann in das Virtualisierungssystem integriert werden und der Hypervisor verbindet ihn mit den emulierten Geräten, ohne dass eine zusätzliche Konfiguration erforderlich ist. Diese Option ist mit einem erheblichen Mehraufwand verbunden und wird nicht von allen Anbietern unterstützt – selbst in einer weniger ressourcenintensiven Implementierung, bei der statt der Emulation eines realen Grafikgeräts eine vereinfachte Abstraktion (Framebuffer) auf die virtuelle Maschine übertragen wird. Manchmal ist ein VNC-Server an einen laufenden X-Server gebunden, aber diese Methode eignet sich besser für den Zugriff auf eine physische Maschine und führt auf einer virtuellen Maschine zu einer Reihe technischer Schwierigkeiten. Der einfachste Weg, einen VNC-Server zu installieren, ist die Verwendung eines integrierten X-Servers. Es erfordert keine physischen Geräte (Videoadapter, Tastatur und Maus) oder deren Emulation mithilfe eines Hypervisors und ist daher für jede Art von VPS geeignet.
Installation und Konfiguration
Wir benötigen eine virtuelle Maschine mit Ubuntu Server 18.04 LTS in der Standardkonfiguration. In den Standard-Repositorys dieser Distribution gibt es mehrere VNC-Server:
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 müssen Sie den VNC-Server installieren:
sudo apt-get install tigervnc-standalone-server tigervnc-common
Es ist eine schlechte Idee, es als Superuser auszuführen. Erstellen Sie einen Benutzer und eine Gruppe:
sudo adduser vnc
Fügen wir den Benutzer zur Sudo-Gruppe hinzu, damit er verwaltungsbezogene Aufgaben ausführen kann. Wenn kein Bedarf besteht, können Sie diesen Schritt überspringen:
sudo gpasswd -a vnc sudo
Der nächste Schritt besteht darin, den VNC-Server mit VNC-Benutzerrechten auszuführen, um ein sicheres Passwort und Konfigurationsdateien im Verzeichnis ~/.vnc/ zu erstellen. Das Passwort kann zwischen 6 und 8 Zeichen lang sein (überschüssige Zeichen werden abgeschnitten). Bei Bedarf wird auch ein Passwort für die reine Ansicht festgelegt, d. h. ohne Zugriff auf Tastatur und Maus. Die folgenden Befehle werden als vnc-Benutzer ausgeführt:
su - vnc
vncserver -localhost no
Standardmäßig verwendet das RFB-Protokoll den TCP-Portbereich von 5900 bis 5906 – das ist der sogenannte. Display-Ports, die jeweils einem X-Server-Bildschirm entsprechen. In diesem Fall sind die Ports den Bildschirmen von :0 bis :6 zugeordnet. Die von uns gestartete VNC-Serverinstanz überwacht Port 5901 (Bildschirm: 1). Andere Instanzen können auf anderen Ports mit den Bildschirmen :2, :3 usw. arbeiten. Vor der weiteren Konfiguration müssen Sie den Server stoppen:
vncserver -kill :1
Der Befehl sollte etwa Folgendes anzeigen: „Killing Xtigervnc Process ID 18105... Success!“
Wenn TigerVNC startet, führt es das Skript ~/.vnc/xstartup aus, um Konfigurationseinstellungen zu konfigurieren. Erstellen wir unser eigenes Skript und speichern zunächst eine Sicherungskopie des vorhandenen Skripts, falls vorhanden:
mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartup
Die Sitzung der XFCE-Desktopumgebung wird durch das folgende xstartup-Skript gestartet:
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &
Der xrdb-Befehl ist erforderlich, damit VNC die .Xresources-Datei im Home-Verzeichnis lesen kann. Dort kann der Benutzer verschiedene grafische Desktop-Einstellungen festlegen: Schriftartendarstellung, Terminalfarben, Cursorthemen usw. Das Skript muss ausführbar gemacht werden:
chmod 755 ~/.vnc/xstartup
Damit ist die Einrichtung des VNC-Servers abgeschlossen. Wenn Sie es mit dem Befehl vncserver -localhost no (als vnc-Benutzer) ausführen, können Sie sich mit dem zuvor angegebenen Passwort verbinden und sehen das folgende Bild:
Starten eines Dienstes über systemd
Das manuelle Starten eines VNC-Servers ist für den Kampfeinsatz nicht geeignet, daher konfigurieren wir einen Systemdienst. Die Befehle werden als Root ausgeführt (wir verwenden sudo). Erstellen wir zunächst eine neue Unit-Datei für unseren Server:
sudo nano /etc/systemd/system/[email protected]
Mit dem @-Symbol im Namen können Sie ein Argument zum Konfigurieren des Dienstes übergeben. In unserem Fall gibt es den VNC-Display-Port an. Die Unit-Datei 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 die neue Datei informieren und sie aktivieren:
sudo systemctl daemon-reload
sudo systemctl enable [email protected]
Die Zahl 1 im Namen gibt die Bildschirmnummer an.
Stoppen Sie den VNC-Server, starten Sie ihn als Dienst und prüfen Sie den Status:
# от имени пользователя vnc
vncserver -kill :1
# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1
Wenn der Dienst läuft, sollten wir so etwas erhalten.
Desktop-Verbindung
Unsere Konfiguration verwendet keine Verschlüsselung, sodass Netzwerkpakete von Angreifern abgefangen werden können. Darüber hinaus kommt es bei VNC-Servern recht häufig vor
sudo netstat -ap |more
Unter Linux, FreeBSD, OS
ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ip
Die Option -L bindet Port 5901 der Remote-Verbindung an Port 5901 auf localhost. Die Option -C aktiviert die Komprimierung und die Option -N weist ssh an, den Remote-Befehl nicht auszuführen. Die Option -l gibt die Anmeldung für die Remote-Anmeldung an.
Nachdem Sie den Tunnel auf dem lokalen Computer eingerichtet haben, müssen Sie den VNC-Client starten und eine Verbindung zum Host 127.0.0.1:5901 (localhost:5901) herstellen und dabei das zuvor angegebene Passwort verwenden, um auf den VNC-Server zuzugreifen. Wir können jetzt sicher über einen verschlüsselten Tunnel mit der grafischen Desktop-Umgebung XFCE auf dem VPS kommunizieren. Im Screenshot wird das oberste Dienstprogramm im Terminalemulator ausgeführt, um den geringen Verbrauch von Rechenressourcen durch die virtuelle Maschine zu verdeutlichen. Dann hängt alles von den Benutzeranwendungen ab.
Sie können einen VNC-Server unter Linux auf fast jedem VPS installieren und konfigurieren. Dafür sind keine teuren und ressourcenintensiven Konfigurationen mit Videoadapter-Emulation oder der Kauf kommerzieller Softwarelizenzen erforderlich. Zusätzlich zu der von uns in Betracht gezogenen Systemdienstoption gibt es noch weitere: Start im Daemon-Modus (über /etc/rc.local), wenn das System startet, oder bei Bedarf über inetd. Letzteres ist für die Erstellung von Mehrbenutzerkonfigurationen interessant. Der Internet-Superserver startet den VNC-Server und verbindet den Client mit ihm, und der VNC-Server erstellt einen neuen Bildschirm und startet die Sitzung. Um sich darin zu authentifizieren, können Sie einen grafischen Anzeigemanager verwenden (z. B.
Source: habr.com