Tutorial

Comment installer et configurer VNC sur Ubuntu 20.04 [Démarrage rapide]

UbuntuMiscellaneousQuickstartUbuntu 20.04

Introduction

Le Virtual Network Computing, ou VNC, est un système de connexion qui vous permet d’utiliser votre clavier et votre souris pour interagir avec un environnement de bureau graphique sur un serveur distant. Il facilite la gestion des fichiers, des logiciels et des paramètres sur un serveur distant pour les utilisateurs qui ne sont pas encore à l'aise avec la ligne de commande.

Avec ce guide de démarrage rapide, vous apprendrez à configurer un serveur VNC avec TightVNC sur un serveur Ubuntu 20.04 et à vous y connecter en toute sécurité via un tunnel SSH. Ensuite, vous utiliserez un programme client VNC sur votre ordinateur local pour interagir avec votre serveur via un environnement de bureau graphique.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin des éléments suivants :

  • Un serveur Ubuntu 20.04 avec un utilisateur administratif non root et un pare-feu configuré avec UFW. Pour le mettre en place, suivez notre guide de configuration initiale du serveur pour Ubuntu 20.04.
  • Un ordinateur local avec un client VNC installé. Le client VNC que vous utilisez doit prendre en charge les connexions sur les tunnels SSH :

Étape 1 - Installation de l'environnement de bureau et du serveur VNC

Une fois connecté à votre serveur avec SSH, mettez à jour votre liste de packages :

  • sudo apt update

Ensuite, installez Xfce avec le package xfce4-goodies, qui contient quelques améliorations pour l'environnement de bureau :

  • sudo apt install xfce4 xfce4-goodies

Une fois cette installation terminée, installez le serveur TightVNC :

  • sudo apt install tightvncserver

Ensuite, exécutez la commande vncpasswd pour définir un mot de passe d'accès VNC et créer les fichiers de configuration initiale :

  • vncpasswd

Vous serez invité à saisir et à vérifier un mot de passe pour accéder à votre machine à distance :

Output
You will require a password to access your desktops. Password: Verify:

Le mot de passe doit comporter entre six et huit caractères. Les mots de passe de plus de 8 caractères seront automatiquement tronqués. Une fois que vous aurez vérifié le mot de passe, vous pourrez créer un mot de passe en lecture seule, mais ce n'est pas obligatoire.

Si un jour, vous souhaitez modifier votre mot de passe ou ajouter un mot de passe en lecture seule, réexécutez la commande vncpasswd.

Étape 2 - Configuration du serveur VNC

Les commandes que le serveur VNC exécute au démarrage se trouvent dans un fichier de configuration appelé xstartup, situé dans le dossier .vnc, sous votre répertoire personnel. Au cours de cette étape, nous allons créer un script xstartup personnalisé qui demandera au serveur VNC de se connecter au bureau Xfce.

Créez un nouveau fichier xstartup et ouvrez-le dans un éditeur de texte, comme nano :

  • nano ~/.vnc/xstartup

Ajoutez les lignes suivantes au nouveau fichier :

~/.vnc/xstartup
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

Après le shebang, la première commande du fichier, xrdb $HOME/. Xresources​​​, indique au framework de l'interface graphique de VNC de lire le fichier . Fichier Xresources. La deuxième commande indique au serveur de lancer Xfce.

Enregistrez et fermez le fichier après avoir ajouté ces lignes. Si vous avez utilisé nano, faites-le en appuyant sur CTRL+X, Y, puis ENTER.

Ensuite, rendez le fichier exécutable :

  • chmod +x ~/.vnc/xstartup

Puis démarrez le serveur VNC avec la commande vncserver :

  • vncserver -localhost

Notez que cette fois, la commande inclut l'option -localhost, qui lie le serveur VNC à l'interface de bouclage de votre serveur. Cela forcera VNC à autoriser uniquement les connexions qui proviennent du serveur sur lequel il est installé.

Vous verrez une sortie semblable à celle-ci :

Output
New 'X' desktop is your_hostname:1 Starting applications specified in /home/sammy/.vnc/xstartup Log file is /home/sammy/.vnc/your_hostname:1.log

Ici, vous pouvez voir que la commande lance une instance de serveur par défaut sur le port 5901. Ce port est un port d'affichage et VNC le désigne par :1 :

Étape 3 - Connexion sécurisée au bureau VNC

Pour vous connecter en toute sécurité à votre serveur, vous allez établir un tunnel SSH puis dire à votre client VNC de se connecter en utilisant ce tunnel plutôt que d'établir une connexion directe.

Créez une connexion SSH sur votre ordinateur local qui transfère en toute sécurité vers la connexion localhost pour VNC. Vous pouvez le faire via le terminal sous Linux ou macOS avec la commande ssh suivante :

  • ssh -L 59000:localhost:5901 -C -N -l sammy your_server_ip

Pour le port local, vous pouvez choisir n'importe quel port qui n'est pas déjà bloqué par un autre programme ou processus, bien que nous utilisions  59000 dans cet exemple. Veillez également à bien remplacer  sammy par le nom d'utilisateur de votre utilisateur Ubuntu et your_server_ip par l'adresse IP de votre serveur.

Si vous vous connectez à votre serveur en utilisant PuTTY, vous pouvez créer un tunnel SSH en cliquant droit sur la barre supérieure de la fenêtre du terminal, puis en cliquant sur l'option Change Settings… :

Cliquez droit sur la barre supérieure pour afficher l'option Modifier les paramètres

Recherchez la branche Connection dans le menu arborescent, à gauche de la fenêtre de Reconfiguration de PuTTY. Développez la branche SSH et cliquez sur Tunnels. Sur l'écran Options controlling SSH port forwarding​​​​​​, saisissez 59000 sous Source Port ​et localhost:5901 sous Destination, de la manière suivante :

Exemple de configuration de tunnel SSH de PuTTY

Cliquez ensuite sur le bouton Add, puis sur le bouton Apply pour implémenter le tunnel.

Une fois le tunnel en cours d'exécution, utilisez un client VNC pour vous connecter à localhost:59000. Vous serez invité à vous authentifier à l'aide du mot de passe défini au cours de l'étape 1.

Une fois connecté, vous verrez le bureau Xfce par défaut. Il devrait ressembler à cela :

Connexion VNC au serveur Ubuntu 20.04 avec l'environnement de bureau Xfce

Vous pouvez accéder aux fichiers dans votre répertoire de base via le gestionnaire de fichiers ou depuis la ligne de commande, comme illustré ici :

Gestionnaire de fichiers via une connexion VNC à Ubuntu 20.04

Appuyez sur CTRL+C dans votre terminal local pour arrêter le tunnel SSH et revenir à votre invite. Cela déconnectera également votre session VNC.

Étape 4 - Exécution de VNC en tant que service système

En configurant le serveur VNC pour qu'il s'exécute en tant que service systemd, vous pouvez utiliser les commandes de gestion de systemd pour démarrer, arrêter et redémarrer le serveur, tout comme activer son lancement à chaque démarrage du serveur.

Créez tout d'abord un nouveau fichier d'unité systemd que vous nommerez /etc/systemd/system/vncserver@.service:

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

Le symbole @ à la fin du nom nous permettra de transmettre un argument que vous pourrez utiliser dans la configuration du service. Vous l'utiliserez pour spécifier le port d'affichage VNC que vous souhaitez utiliser lorsque vous gérez le service.

Ajoutez les lignes suivantes au fichier, en veillant à modifier la valeur de User, Group, WorkingDirectory et saisir votre nom d'utilisateur dans la valeur de PIDFILE :

/etc/systemd/system/vncserver@.service
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target

[Service]
Type=forking
User=sammy
Group=sammy
WorkingDirectory=/home/sammy

PIDFile=/home/sammy/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

Enregistrez et fermez le fichier.

Ensuite, informez le système du nouveau fichier d'unité :

  • sudo systemctl daemon-reload

Activez le fichier d'unité :

  • sudo systemctl enable vncserver@1.service

Le 1 suivant le signe @ indique le numéro d'affichage sur lequel le service doit apparaître, dans ce cas la valeur par défaut :1, comme mentionné à l'étape 2.

Arrêtez l'instance actuelle du serveur VNC si elle est toujours en cours d'exécution.

  • vncserver -kill :1

Puis, démarrez-le comme vous le feriez pour n'importe quel autre service systemd :

  • sudo systemctl start vncserver@1

Vous pouvez vérifier qu'il a démarré avec cette commande :

  • sudo systemctl status vncserver@1

Consultez notre tutoriel Comment utiliser Systemctl pour gérer les services et unités Systemd pour plus d'informations sur systemctl.

Pour vous reconnecter, redémarrez votre tunnel SSH :

  • ssh -L 59000:127.0.0.1:5901 -C -N -l sammy your_server_ip

Puis, établissez une nouvelle connexion à localhost:59000 à l'aide de votre logiciel client VNC pour vous connecter à votre serveur.

Conclusion

Vous disposez maintenant d'un serveur VNC sécurisé fonctionnant sur votre serveur Ubuntu 20.04. Vous pourrez désormais gérer vos fichiers, vos logiciels et vos paramètres grâce à une interface graphique intuitive, ainsi qu'exécuter des logiciels graphiques à distance comme des navigateurs Web.

0 Comments

Creative Commons License