Einige Benutzer mieten ein relativ kostengünstiges Windows VPS, um Remotedesktopdienste auszuführen. Dasselbe kann unter Linux durchgeführt werden, ohne dass Sie Ihre eigene Hardware im Rechenzentrum platzieren oder einen dedizierten Server mieten müssen. Jemand benötigt eine vertraute grafische Umgebung zum Testen und Entwickeln oder einen Remotedesktop mit einer großen Bandbreite für die Arbeit mit mobilen Geräten. Es gibt viele Anwendungen für Virtual Network Computing (VNC), die auf dem RFB-Protokoll (Remote FrameBuffer) basieren. In einem kurzen Artikel zeigen wir Ihnen, wie Sie es auf einer virtuellen Maschine mit einem beliebigen Hypervisor konfigurieren.
Inhaltsverzeichnis:
Auswählen eines VNC-Servers
Installieren und Konfigurieren
Starten eines Dienstes über systemd Herstellen einer
Verbindung zu einem Desktop
Auswählen eines VNC-Servers
Der VNC-Dienst kann in das Virtualisierungssystem integriert werden, während der Hypervisor ihn mit den emulierten Geräten verbindet und keine zusätzliche Konfiguration erforderlich ist. Diese Option ist mit erheblichem Overhead verbunden und wird nicht von allen Anbietern unterstützt - selbst in einer weniger ressourcenintensiven Implementierung, wenn eine vereinfachte Abstraktion (Framebuffer) auf eine virtuelle Maschine übertragen wird, anstatt ein reales Grafikgerät zu emulieren. 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, während sie auf einer virtuellen Maschine eine Reihe technischer Schwierigkeiten verursacht. Am einfachsten ist es, einen VNC-Server mit einem eingebetteten X-Server zu installieren. Es erfordert keine physischen Geräte (Videoadapter, Tastatur und Maus) oder deren Emulation mit einem Hypervisor 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 befinden sich mehrere VNC-Server: TightVNC , TigerVNC , x11vnc und andere. Wir haben uns für TigerVNC entschieden - eine echte Gabel, die vom TightVNC-Entwickler nicht unterstützt wird. Andere Server werden auf ähnliche Weise konfiguriert. Sie müssen auch eine Desktop-Umgebung auswählen: Unserer Meinung nach ist XFCE aufgrund der relativ geringen Anforderungen an die Computerressourcen die beste Option. Interessenten können ein anderes DE oder WM installieren: Alles hängt von den persönlichen Vorlieben ab, aber die Auswahl der Software wirkt sich direkt auf den Bedarf an RAM und Rechenkernen aus.
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 als Root auszuführen ist eine schlechte Idee. Benutzer und Gruppe erstellen:
sudo adduser vnc
Fügen wir den Benutzer der Sudo-Gruppe hinzu, damit er verwaltungsbezogene Aufgaben lösen kann. Wenn dies nicht erforderlich ist, können Sie diesen Schritt überspringen:
sudo gpasswd -a vnc sudo
Der nächste Schritt besteht darin, den VNC-Server mit vnc-Benutzerrechten zu starten, um ein sicheres Kennwort und Konfigurationsdateien im Verzeichnis ~ / .vnc / zu erstellen. Die Länge des Passworts kann zwischen 6 und 8 Zeichen liegen (die zusätzlichen werden abgeschnitten). Falls erforderlich, wird auch ein Nur-Ansicht-Passwort festgelegt, d.h. ohne Zugang zu 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 5900 bis 5906 - dies ist der sogenannte. Anzeigeports, die jeweils einem X-Server-Bildschirm entsprechen. In diesem Fall sind die Ports Bildschirmen von: 0 bis: 6 zugeordnet. Die von uns gestartete VNC-Serverinstanz überwacht Port 5901 (Bildschirm: 1). Andere Instanzen können an anderen Ports mit folgenden Bildschirmen ausgeführt werden: 2,: 3 usw. Vor der weiteren Konfiguration müssen Sie den Server stoppen:
vncserver -kill :1
Der Befehl sollte ungefähr die folgende Meldung anzeigen: "Killing Xtigervnc process ID 18105 ... success!".
Wenn TigerVNC gestartet wird, wird das Skript ~ / .vnc / xstartup ausgeführt, um Konfigurationsparameter festzulegen. Lassen Sie uns unser eigenes Skript erstellen, nachdem wir zuvor eine Sicherungskopie des vorhandenen Skripts gespeichert haben, falls vorhanden:
mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartup
Eine XFCE-Desktopumgebungssitzung wird mit dem folgenden xstartup-Skript gestartet:
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &
Der Befehl xrdb ist erforderlich, damit VNC die XXources-Datei im Ausgangsverzeichnis lesen kann. Dort kann der Benutzer verschiedene Parameter des grafischen Desktops definieren: Schriftwiedergabe, Terminalfarben, Cursorthemen usw. Das Skript muss ausführbar gemacht werden:
chmod 755 ~/.vnc/xstartup
Damit ist die VNC-Serverkonfiguration abgeschlossen. Wenn Sie es mit dem Befehl vncserver -localhost no (als vnc-Benutzer) starten, können Sie eine Verbindung mit dem zuvor festgelegten Kennwort herstellen und das folgende Bild sehen:
Starten eines Dienstes über systemd
Das manuelle Starten eines VNC-Servers ist für den Kampfeinsatz nicht gut geeignet, daher konfigurieren wir einen Systemdienst. Befehle werden als root ausgeführt (sudo verwenden). Lassen Sie uns zunächst eine neue Einheitendatei für unseren Server erstellen:
sudo nano /etc/systemd/system/vncserver@.service
Mit dem @ -Symbol im Namen können Sie ein Argument zum Konfigurieren des Dienstes übergeben. In unserem Fall wird der VNC-Anzeigeport festgelegt. Eine 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
Anschließend müssen Sie systemd über das Erscheinungsbild einer neuen Datei informieren und diese aktivieren:
sudo systemctl daemon-reload
sudo systemctl enable vncserver@1.service
Die Nummer 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 ausgeführt wird, sollten wir so etwas bekommen.
Desktop-Verbindung
Unsere Konfiguration verwendet keine Verschlüsselung, sodass Netzwerkpakete von Angreifern abgefangen werden können. Darüber hinaus werden Schwachstellen häufig in VNC-Servern gefunden , sodass Sie sie nicht für den Zugriff über das Internet öffnen sollten. Um eine sichere Verbindung auf dem lokalen Computer herzustellen, müssen Sie den Datenverkehr in einen SSH-Tunnel packen und dann den VNC-Client konfigurieren. Unter Windows können Sie einen grafischen SSH-Client (z. B. PuTTY) verwenden. Aus Sicherheitsgründen hört TigerVNC auf dem Server nur localhost ab und ist über öffentliche Netzwerke nicht direkt zugänglich:
sudo netstat -ap |more
Unter Linux, FreeBSD, OS X und anderen UNIX-ähnlichen Betriebssystemen erfolgt der Tunnel vom Clientcomputer mit dem Dienstprogramm ssh (sshd muss auf dem VNC-Server ausgeführt werden):
ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ip
Die Option -L bindet Port 5901 der Remoteverbindung an Port 5901 auf localhost. Die Option -C aktiviert die Komprimierung und -N weist ssh an, keinen Remote-Befehl auszuführen. Die Option -l gibt die Anmeldung für die Remote-Anmeldung an.
Nach dem Konfigurieren des Tunnels auf dem lokalen Computer müssen Sie den VNC-Client starten und eine Verbindung zum Host 127.0.0.1:5901 (localhost: 5901) herstellen, indem Sie das zuvor festgelegte Kennwort verwenden, um auf den VNC-Server zuzugreifen. Wir können jetzt sicher über einen verschlüsselten Tunnel mit der grafischen XFCE-Desktop-Umgebung auf dem VPS kommunizieren. Im Screenshot wird das oberste Dienstprogramm im Terminalemulator ausgeführt, um den unbedeutenden Verbrauch von Rechenressourcen durch die virtuelle Maschine anzuzeigen. Dann hängt alles von den Benutzeranwendungen ab.
Sie können einen VNC-Server unter Linux auf fast jedem VPS installieren und konfigurieren. Dies erfordert keine teuren und ressourcenintensiven Konfigurationen mit Videoadapter-Emulation oder den Kauf kommerzieller Softwarelizenzen. Zusätzlich zu der von uns in Betracht gezogenen Systemdienstoption gibt es noch andere: Starten im Daemon-Modus (über /etc/rc.local) beim Systemstart oder bei Bedarf über inetd. Letzteres ist interessant für die Erstellung von Mehrbenutzerkonfigurationen. Der Internet-Superserver startet den VNC-Server und ordnet ihm einen Client zu. Der VNC-Server erstellt einen neuen Bildschirm und startet eine Sitzung. Zur Authentifizierung können Sie einen grafischen Anzeigemanager (z. B. LightDM ) verwenden. Nach dem Trennen des Clients wird die Sitzung geschlossen und alle Programme, die mit dem Bildschirm arbeiten, werden beendet.