Ce guide couvre les étapes nécessaires à l'installation et à la configuration d'un serveur VNC sur Ubuntu 18.04. Nous vous montrerons également comment vous connecter en toute sécurité au serveur VNC via un tunnel SSH.
Virtual Network Computing (VNC) est un système de partage de bureau graphique qui vous permet d'utiliser votre clavier et votre souris pour contrôler à distance un autre ordinateur. Il s'agit d'une alternative open source au protocole de bureau à distance Microsoft (RDP).
Prérequis #
Avant de poursuivre le didacticiel, assurez-vous d'être connecté en tant qu'utilisateur disposant des privilèges sudo.
Installation de l'environnement de bureau #
La plupart des serveurs n'ont pas d'environnement de bureau installé, nous allons donc commencer par installer un environnement de bureau léger.
Il existe plusieurs environnements de bureau (DE) disponibles dans les référentiels Ubuntu. Nous allons installer Xfce. Il s'agit d'un environnement de bureau rapide, stable et léger, ce qui le rend idéal pour une utilisation sur un serveur distant.
Entrez les commandes suivantes pour installer Xfce sur votre serveur :
sudo apt update
sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
Selon votre système, le téléchargement et l'installation des packages Xfce peuvent prendre un certain temps.
Installation du serveur VNC #
Il existe également plusieurs serveurs VNC différents disponibles dans les référentiels Ubuntu tels que TightVNC, TigerVNC et x11vnc. Chaque serveur VNC présente des forces et des faiblesses différentes en termes de vitesse et de sécurité.
Nous allons installer TigerVNC. Il s'agit d'un serveur VNC hautes performances activement maintenu.
Tapez la commande suivante pour installer TigerVNC sur votre serveur Ubuntu :
sudo apt install tigervnc-standalone-server tigervnc-common
Maintenant que le serveur VNC est installé, l'étape suivante consiste à créer la configuration initiale et à définir le mot de passe. N'utilisez pas sudo lors de l'exécution de vncserver
commande :
vncserver
Vous serez invité à entrer et à confirmer le mot de passe et à le définir comme mot de passe en lecture seule. Si vous choisissez de configurer un mot de passe en lecture seule, l'utilisateur ne pourra pas interagir avec l'instance VNC avec la souris et le clavier.
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
Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/linuxize/.vnc/passwd :1 to connect to the VNC server.
La première fois que le vncserver
est exécutée, elle crée et stocke le fichier de mot de passe dans ~/.vnc
. Ce répertoire sera créé s'il n'est pas présent.
Notez le :1
après le nom d'hôte dans la sortie ci-dessus. Ceci indique le numéro de port d'affichage sur lequel le serveur vnc s'exécute. Dans notre cas, le serveur tourne sur le port TCP 5901
(5900+1). Si vous créez une deuxième instance avec vncserver
il s'exécutera sur le prochain port libre, c'est-à-dire :2
, ce qui signifie que le serveur tourne sur le port 5902
(5900+2).
Ce qu'il est important de retenir, c'est que lorsque vous travaillez avec des serveurs VNC, :X
est un port d'affichage qui fait référence à 5900+X
.
Avant de passer à l'étape suivante, arrêtez l'instance VNC à l'aide de vncserver
commande avec un -kill
option et le numéro de serveur comme argument. Dans cet exemple, le serveur s'exécute sur le port 5901 (:1
), nous allons donc l'arrêter avec :
vncserver -kill :1
Killing Xtigervnc process ID 7264... success!
Configuration du serveur VNC #
Maintenant que Xfce et TigerVNC sont installés sur le serveur, nous devons configurer TigerVNC pour utiliser Xfce. Pour cela, créez le fichier suivant :
~/.vnc/xstartupnano ~/.vnc/xstartup
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4
Enregistrez et fermez le fichier. Les commandes ci-dessus seront automatiquement exécutées chaque fois que vous démarrez ou redémarrez le serveur TigerVNC.
Le ~/.vnc/xstartup
Le fichier doit également avoir des autorisations d'exécution. Exécutez le chmod
suivant commande pour s'assurer que les autorisations sont correctes :
chmod u+x ~/.vnc/xstartup
Si vous devez transmettre des options supplémentaires au serveur VNC, créez un fichier nommé config
et ajoutez une option par ligne. Voici un exemple :
geometry=1920x1080
dpi=96
Création d'un fichier d'unité Systemd #
Créez un fichier d'unité systemd afin de démarrer, d'arrêter et de redémarrer le service VNC selon vos besoins, comme tout autre service systemd.
Ouvrez votre éditeur de texte et copiez-collez-y la configuration suivante. Assurez-vous de changer le nom d'utilisateur à la ligne 7 pour qu'il corresponde à votre nom d'utilisateur.
sudo nano /etc/systemd/system/[email protected]
/etc/systemd/system/[email protected][Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=simple
User=linuxize
PAMName=login
PIDFile=/home/%u/.vnc/%H%i.pid
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill :%i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver :%i -geometry 1440x900 -alwaysshared -fg
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
Enregistrez et fermez le fichier.
Avertissez systemd que nous avons créé un nouveau fichier d'unité avec :
sudo systemctl daemon-reload
L'étape suivante consiste à activer le fichier unité avec la commande suivante :
sudo systemctl enable [email protected]
Le nombre 1
après le @
Le signe définit le port d'affichage sur lequel le service VNC s'exécutera. Cela signifie que le serveur VNC écoutera sur le port 5901
, comme nous l'avons vu dans la section précédente.
Démarrez le service VNC en exécutant :
sudo systemctl start [email protected]
Vérifiez que le service a bien démarré avec :
sudo systemctl status [email protected]
● [email protected] - Remote desktop service (VNC)
Loaded: loaded (/etc/systemd/system/[email protected]; indirect; vendor preset: enabled)
Active: active (running) since Thu 2018-08-16 19:05:54 UTC; 4s ago
Process: 9893 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
Main PID: 9900 (vncserver)
Tasks: 0 (limit: 507)
CGroup: /system.slice/system-vncserver.slice/[email protected]
‣ 9900 /usr/bin/perl /usr/bin/vncserver :1 -geometry 1440x900 -alwaysshared -fg
Connexion au serveur VNC #
VNC n'est pas un protocole crypté et peut faire l'objet d'un reniflage de paquets. L'approche recommandée consiste à créer un tunnel SSH qui transférera en toute sécurité le trafic de votre ordinateur local sur le port 5901 vers le serveur sur le même port.
Configurer le tunnel SSH sur Linux et macOS #
Si vous exécutez Linux, macOS ou tout autre système d'exploitation basé sur Unix sur votre machine, vous pouvez facilement créer un tunnel SSH avec la commande suivante :
ssh -L 5901:127.0.0.1:5901 -N -f -l username server_ip_address
Vous serez invité à entrer le mot de passe de l'utilisateur.
N'oubliez pas de remplacer username
et server_ip_address
avec votre nom d'utilisateur et l'adresse IP de votre serveur.
Configurer le tunnel SSH sous Windows #
Si vous exécutez Windows, vous pouvez configurer le tunnel SSH à l'aide du client PuTTY SSH.
Ouvrez Putty et entrez l'adresse IP de votre serveur dans le champ Host name or IP address
champ.
Sous la Connection
menu, boîte, développez SSH
et sélectionnez Tunnels
. Entrez le port du serveur VNC (5901
) dans le Source Port
et saisissez server_ip_address:5901
dans la Destination
champ et cliquez sur le Add
bouton comme indiqué dans l'image ci-dessous :
Revenir à la Session
pour enregistrer les paramètres afin de ne pas avoir à les saisir à chaque fois. Sur le serveur distant, sélectionnez la session enregistrée et cliquez sur Open
bouton.
Connexion à l'aide de Vncviewer #
Maintenant que le tunnel SSH est créé, il est temps d'ouvrir votre Vncviewer et de vous connecter au serveur VNC à localhost:5901
.
Vous pouvez utiliser n'importe quel visualiseur VNC tel que TigerVNC, TightVNC, RealVNC, UltraVNC, Vinagre et VNC Viewer pour Google Chrome.
Nous utiliserons TigerVNC. Ouvrez la visionneuse, entrez localhost:5901
, et cliquez sur Connect
bouton.
Entrez votre mot de passe utilisateur lorsque vous y êtes invité et vous devriez voir le bureau Xfce par défaut. Cela ressemblera à ceci :
Vous pouvez commencer à interagir avec le bureau XFCE distant depuis votre ordinateur local à l'aide de votre clavier et de votre souris.