Tutorial

Comment installer et configurer VNC sur Ubuntu 18.04

Published on February 26, 2020
Français
Comment installer et configurer VNC sur Ubuntu 18.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.

Dans ce guide, vous allez configurer un serveur VNC sur un serveur Ubuntu 18.04 et vous y connecter en toute sécurité via un tunnel SSH. Vous utiliserez TightVNC, un logiciel de contrôle à distance rapide et léger. Ce choix garantira que notre connexion VNC sera fluide et stable, même sur des connexions Internet plus lentes.

Conditions préalables

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

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

Par défaut, un serveur Ubuntu 18.04 n’a pas d’environnement de bureau graphique ou de serveur VNC installé, nous allons donc commencer par les installer. Plus précisément, nous installerons des packages pour le dernier environnement de bureau Xfce et le package TightVNC disponible dans le référentiel Ubuntu officiel.

Sur votre serveur, mettez à jour votre liste de packages :

  1. sudo apt update

Installez maintenant l’environnement de bureau Xfce sur votre serveur :

  1. sudo apt install xfce4 xfce4-goodies

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

  1. sudo apt install tightvncserver

Pour terminer la configuration initiale du serveur VNC après l’installation, utilisez la commande vncserver pour définir un mot de passe sécurisé et créer les fichiers de configuration initiale :

  1. vncserver

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 le mot de passe vérifié, vous aurez la possibilité de créer un mot de passe en lecture seule. Les utilisateurs qui se connectent avec le mot de passe en lecture seule ne pourront pas contrôler l’instance VNC avec leur souris ou leur clavier. Cette option est utile si vous souhaitez montrer quelque chose à d’autres personnes à l’aide de votre serveur VNC, mais elle n’est pas obligatoire.

Le processus crée ensuite les fichiers de configuration par défaut et les informations de connexion nécessaires pour le serveur :

Output
Would you like to enter a view-only password (y/n)? n xauth: file /home/sammy/.Xauthority does not exist New 'X' desktop is your_hostname:1 Creating default startup script /home/sammy/.vnc/xstartup Starting applications specified in /home/sammy/.vnc/xstartup Log file is /home/sammy/.vnc/your_hostname:1.log

Configurons maintenant le serveur VNC.

Étape 2 - Configuration du serveur VNC

Le serveur VNC doit savoir quelles commandes exécuter lorsqu’il démarre. Plus précisément, VNC doit savoir à quel bureau graphique se connecter.

Ces commandes se trouvent dans un fichier de configuration nommé xstartup dans le dossier .vnc de votre répertoire de base. Le script de démarrage a été créé lorsque vous avez exécuté vncserver à l’étape précédente, mais nous allons créer le nôtre pour lancer le bureau Xfce.

Lors de la première configuration de VNC, celui-ci 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. VNC peut lancer plusieurs instances sur d’autres ports d’affichage, tels que :2, :3 et ainsi de suite.

Comme nous allons modifier la configuration du serveur VNC, arrêtez tout d’abord l’instance du serveur VNC lancée sur le port 5901 grâce à la commande suivante :

  1. vncserver -kill :1

La sortie devrait ressembler à ceci, bien que vous verrez un PID différent :

Output
Killing Xtightvnc process ID 17648

Avant de modifier le fichier xstartup, sauvegardez l’original :

  1. mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

Créez maintenant un nouveau fichier xstartup et ouvrez-le dans votre éditeur de texte :

  1. nano ~/.vnc/xstartup

Les commandes de ce fichier sont exécutées automatiquement chaque fois que vous démarrez ou redémarrez le serveur VNC. Nous avons besoin que VNC démarre notre environnement de bureau s’il n’est pas déjà lancé. Ajoutez ces commandes au fichier :

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

La première commande du fichier, xrdb $HOME/.Xresources​​​, indique au framework de l’interface graphique de VNC de lire le fichier .Xresources. .Xresources permet à un utilisateur de modifier certains paramètres du bureau graphique, tels que les couleurs du terminal, les thèmes de curseur et le rendu des polices. La seconde commande indique au serveur de lancer Xfce, où vous trouverez tous les logiciels graphiques dont vous avez besoin pour gérer confortablement votre serveur.

Pour que le serveur VNC puisse utiliser correctement ce nouveau fichier de démarrage, nous devons le rendre exécutable.

  1. sudo chmod +x ~/.vnc/xstartup

Redémarrez maintenant le serveur VNC.

  1. vncserver

Vous verrez une sortie similaire à 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

Une fois la configuration en place, connectons-nous au serveur depuis notre machine locale.

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

VNC n’utilise pas lui-même de protocoles sécurisés lors de la connexion. Nous utiliserons un tunnel SSH pour nous connecter en toute sécurité à notre serveur, puis nous dirons à notre client VNC d’utiliser 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 suivante :

  1. ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip

Le commutateur -L définit les liaisons de port. Dans ce cas, nous relions le port 5901 de la connexion distante au port 5901 de votre machine locale. Le commutateur -C active la compression, tandis que le commutateur -N indique à ssh que nous ne voulons pas exécuter une commande à distance. Le commutateur -l définit le nom de connexion distant.

N’oubliez pas de remplacer sammy et your_server_ip par le nom d’utilisateur non root avec privilèges sudo et l’adresse IP de votre serveur.

Si vous utilisez un client SSH graphique, tel que PuTTY, utilisez your_server_ip comme IP de connexion et définissez localhost:5901 comme nouveau port transféré dans les paramètres du tunnel SSH du programme.

Une fois le tunnel en cours d’exécution, utilisez un client VNC pour vous connecter à localhost:5901. 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 :

VNC connection to Ubuntu 18.04 server

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 :

Files via VNC connection to Ubuntu 18.04

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

Configurons ensuite notre serveur VNC en tant que service.

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

Ensuite, nous allons configurer le serveur VNC en tant que service systemd afin de pouvoir le démarrer, l’arrêter et le redémarrer au besoin, comme n’importe quel autre service. Cela garantira également que VNC se lance au redémarrage de votre serveur.

Tout d’abord, créez un nouveau fichier d’unité appelé /etc/systemd/system/vncserver@.service à l’aide de l’éditeur de texte de votre choix :

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

Le symbole @ à la fin du nom nous permettra de transmettre un argument que nous pourrons utiliser dans la configuration du service. Nous l’utiliserons pour spécifier le port d’affichage VNC que nous souhaitons utiliser lorsque nous gérons le service.

Ajoutez les lignes suivantes au fichier. Veillez à modifier les valeurs de User, Group et WorkingDirectory, ainsi que le nom d’utilisateur dans la valeur de PIDFILE, en utilisant votre nom d’utilisateur :

/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 :%i ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target

La commande ExecStartPre arrête VNC s’il est déjà en cours d’exécution. La commande ExecStart lance VNC et définit une profondeur de couleur de 24 bits avec une résolution de 1280x800. Vous pouvez également modifier ces options de démarrage selon vos besoins.

Enregistrez et fermez le fichier.

Ensuite, informez le système du nouveau fichier d’unité.

  1. sudo systemctl daemon-reload

Activez le fichier d’unité.

  1. 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.

  1. vncserver -kill :1

Puis, démarrez le serveur comme vous le feriez pour n’importe quel autre service systemd.

  1. sudo systemctl start vncserver@1

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

  1. sudo systemctl status vncserver@1

S’il a démarré correctement, la sortie devrait ressembler à ceci :

Output
● vncserver@1.service - Start TightVNC server at startup Loaded: loaded (/etc/systemd/system/vncserver@.service; indirect; vendor preset: enabled) Active: active (running) since Mon 2018-07-09 18:13:53 UTC; 2min 14s ago Process: 22322 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS) Process: 22316 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=0/SUCCESS) Main PID: 22330 (Xtightvnc) ...

Votre serveur VNC sera désormais disponible lorsque vous redémarrerez la machine.

Relancez votre tunnel SSH :

  1. ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip

Puis, établissez une nouvelle connexion à localhost:5901 à l’aide de votre logiciel client VNC pour vous connecter à votre machine.

Conclusion

Vous disposez maintenant d’un serveur VNC sécurisé fonctionnant sur votre serveur Ubuntu 18.04. Vous pourrez désormais gérer vos fichiers, vos logiciels et vos paramètres grâce à une interface graphique intuitive et familière, et vous pourrez exécuter à distance des logiciels graphiques tels que des navigateurs Web.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about us


About the authors

Default avatar
finid

author


Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel