In diesem Tutorial führen wir Sie durch die Schritte zum Installieren und Konfigurieren eines VNC-Servers auf einem CentOS 7-System. Wir zeigen Ihnen auch, wie Sie sich über einen SSH-Tunnel sicher mit dem VNC-Server verbinden.
Virtual Network Computing (VNC) ist ein grafisches Desktop-Sharing-System, mit dem Sie Ihre Tastatur und Maus verwenden können, um einen anderen Computer fernzusteuern.
Voraussetzungen #
Bevor Sie mit dem Tutorial fortfahren, vergewissern Sie sich, dass Sie als Benutzer mit sudo-Berechtigungen angemeldet sind. Wir gehen davon aus, dass Sie als Benutzer namens linuxize
angemeldet sind .
Installation von Xfce Desktop Environment #
Bei CentOS-Serverinstallationen ist häufig keine Desktop-Umgebung installiert, daher beginnen wir mit der Installation einer einfachen Desktop-Umgebung.
Wir werden Xfce installieren. Es ist schnell, stabil und verbraucht wenig Systemressourcen, was es ideal für die Verwendung auf Remote-Servern macht.
Xfce-Pakete sind im EPEL-Repository verfügbar. Wenn das Repository auf Ihrem Server nicht aktiviert ist, können Sie es aktivieren, indem Sie Folgendes eingeben:
sudo yum install epel-release
Sobald das Repository hinzugefügt wurde, installieren Sie Xfce auf Ihrem CentOS mit:
sudo yum groupinstall xfce
Abhängig von Ihrem System kann das Herunterladen und Installieren der Xfce-Pakete und Abhängigkeiten einige Zeit dauern.
VNC-Server wird installiert #
Wir werden TigerVNC als VNC-Server unserer Wahl verwenden. TigerVNC ist ein aktiv gewarteter Hochleistungs-Open-Source-VNC-Server.
Geben Sie den folgenden Befehl ein, um TigerVNC auf Ihrem CentOS-Server zu installieren:
sudo yum install tigervnc-server
Nachdem der VNC-Server installiert ist, besteht der nächste Schritt darin, den vncserver
auszuführen Befehl, der die Erstkonfiguration erstellt und das Passwort einrichtet. Verwenden Sie sudo nicht, wenn Sie den folgenden Befehl ausführen:
vncserver
Sie werden aufgefordert, das Passwort einzugeben und zu bestätigen und ob Sie es als Nur-Lese-Passwort festlegen möchten. Wenn Sie sich dafür entscheiden, ein Nur-Anzeige-Passwort einzurichten, kann der Benutzer nicht mit der Maus und der Tastatur mit der VNC-Instanz interagieren.
You will require a password to access your desktops.
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
/usr/bin/xauth: file /home/linuxize/.Xauthority does not exist
New 'server2.linuxize.com:1 (linuxize)' desktop at :1 on machine server2.linuxize.com
Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/linuxize/.vnc/server2.linuxize.com:1.log
Das erste Mal den vncserver
Befehl ausgeführt wird, wird die Passwortdatei erstellt und in ~/.vnc
gespeichert Verzeichnis, das erstellt wird, wenn es nicht vorhanden ist.
Beachten Sie den :1
nach dem Hostnamen in der obigen Ausgabe. Dies gibt die Anzeigeportnummer an, auf der der vnc-Server ausgeführt wird. In unserem Fall läuft der Server auf dem TCP-Port 5901
(5900+1). Wenn Sie eine zweite Instanz mit vncserver
erstellen es wird auf dem nächsten freien Port ausgeführt, z. B. :2
, was bedeutet, dass der Server auf Port 5902
läuft (5900+2).
Beachten Sie Folgendes, wenn Sie mit VNC-Servern arbeiten::X
ist ein Displayport, der sich auf 5900+X
bezieht .
Bevor Sie mit dem nächsten Schritt fortfahren, stoppen Sie zuerst die VNC-Instanz mit dem vncserver
Befehl mit einem -kill
Option und die Servernummer als Argument. In diesem Fall läuft der Server auf Port 5901 (:1
), also beenden wir es mit:
vncserver -kill :1
Killing Xvnc process ID 2432
VNC-Server wird konfiguriert #
Nachdem sowohl Xfce als auch TigerVNC auf dem Server installiert sind, besteht der nächste Schritt darin, TigerVNC für die Verwendung von Xfce zu konfigurieren. Öffnen Sie dazu folgende Datei:
nano ~/.vnc/xstartup
Und ändern Sie die letzte Zeile von exec /etc/X11/xinit/xinitrc
zu exec startxfce4
:
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4
Speichern und schließen Sie die Datei. Das obige Skript wird automatisch ausgeführt, wenn Sie den TigerVNC-Server starten oder neu starten.
Wenn Sie zusätzliche Optionen an den VNC-Server übergeben müssen, öffnen Sie ~/.vnc/config
Datei und fügen Sie eine Option pro Zeile hinzu. Die gebräuchlichsten Optionen sind in der Datei aufgeführt. Entkommentiere und ändere nach Belieben.
Hier ist ein Beispiel:
~/.vnc/config# securitytypes=vncauth,tlsvnc
# desktop=sandbox
geometry=1920x1080
# localhost
# alwaysshared
dpi=96
Erstellen einer Systemd-Unit-Datei #
Wir erstellen eine systemd-Unit-Datei, die es uns ermöglicht, den VNC-Dienst nach Bedarf einfach zu starten, zu stoppen und neu zu starten, genau wie jeder andere systemd-Dienst.
Kopieren Sie die Unit-Datei vncserver mit dem cp
Befehl:
sudo cp /usr/lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:1.service
Öffnen Sie die Datei mit Ihrem Texteditor, bearbeiten Sie die gelb markierten Zeilen und ersetzen Sie „linuxize“ durch Ihren tatsächlichen Benutzernamen:
sudo nano /etc/systemd/system/vncserver@\:1.service
/etc/systemd/system/vncserver@:1.service[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
User=linuxize
Group=linuxize
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver %I
PIDFile=/home/linuxize/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
[Install]
WantedBy=multi-user.target
Speichern und schließen Sie die Datei. Systemd benachrichtigen, dass wir eine neue Unit-Datei erstellt haben mit:
sudo systemctl daemon-reload
Der nächste Schritt besteht darin, die Unit-Datei mit dem folgenden Befehl zu aktivieren:
sudo systemctl enable vncserver@:1.service
Die Zahl 1
nach dem @
sign definiert den Anzeigeport, auf dem der VNC-Dienst ausgeführt wird. In diesem Beispiel ist das der Standardwert 1
, und der VNC-Server lauscht auf Port 5901
, wie wir im vorherigen Abschnitt besprochen haben.
Starten Sie den VNC-Dienst, indem Sie Folgendes ausführen:
sudo systemctl start vncserver@:1.service
Überprüfen Sie, ob der Dienst erfolgreich gestartet wurde mit:
sudo systemctl status vncserver@:1.service
● vncserver@:1.service - Remote desktop service (VNC)
Loaded: loaded (/etc/systemd/system/vncserver@:1.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2020-04-06 19:27:47 UTC; 16s ago
Process: 909 ExecStart=/usr/bin/vncserver %I (code=exited, status=0/SUCCESS)
Process: 891 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
Main PID: 923 (Xvnc)
...
Verbinden mit VNC-Server #
VNC ist kein verschlüsseltes Protokoll und kann Paketschnüffeln ausgesetzt sein. Der empfohlene Ansatz besteht darin, einen SSH-Tunnel zu erstellen, der den Datenverkehr von Ihrem lokalen Computer auf Port 5901 sicher an den Server auf demselben Port weiterleitet.
SSH-Tunneling unter Linux und macOS einrichten #
Wenn Sie Linux, macOS oder ein anderes Unix-basiertes Betriebssystem auf Ihrem Computer ausführen, können Sie mit dem folgenden ssh
ganz einfach einen Tunnel erstellen Befehl:
ssh -L 5901:127.0.0.1:5901 -N -f -l username server_ip_address
Sie werden aufgefordert, das Benutzerkennwort einzugeben.
Vergessen Sie nicht, username
zu ersetzen und server_ip_address
mit Ihrem Benutzernamen und der IP-Adresse Ihres Servers.
SSH-Tunneling unter Windows einrichten #
Wenn Sie Windows ausführen, können Sie SSH-Tunneling mit dem PuTTY-SSH-Client einrichten.
Öffnen Sie Putty und geben Sie Ihre Server-IP-Adresse in das Feld Host name or IP address
ein Feld.
Unter Connection
erweitern Sie SSH
und wählen Sie Tunnels
. Geben Sie den Port des VNC-Servers ein (5901
) im Source Port
Feld und geben Sie server_ip_address:5901
ein im Destination
Feld und klicken Sie auf Add
Schaltfläche wie im Bild unten gezeigt:
Gehen Sie zurück zur Session
Seite, um die Einstellungen zu speichern, damit Sie sie nicht jedes Mal neu eingeben müssen.
Um sich beim Remote-Server anzumelden, wählen Sie die gespeicherte Sitzung aus und klicken Sie auf Open
Schaltfläche
Verbinden mit Vncviewer #
Nachdem Sie das SSH-Tunneling eingerichtet haben, ist es an der Zeit, Ihren Vncviewer zu öffnen und eine Verbindung zum VNC-Server unter localhost:5901
herzustellen .
Sie können jeden VNC-Viewer wie TigerVNC, TightVNC, RealVNC, UltraVNC, Vinagre und VNC Viewer für Google Chrome verwenden.
In diesem Beispiel verwenden wir TigerVNC. Öffnen Sie Ihren VNC-Viewer und geben Sie localhost:5901
ein , und klicken Sie auf Connect
Schaltfläche.
Geben Sie Ihr Passwort ein, wenn Sie dazu aufgefordert werden, und Sie sollten den Standard-Xfce-Desktop sehen. Es sollte etwa so aussehen:
Sie können jetzt mit der Interaktion mit dem Remote-XFCE-Desktop von Ihrem lokalen Computer aus mit Ihrer Tastatur und Maus beginnen.