Manager, Developer Education
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.
Pour suivre ce tutoriel, vous aurez besoin des éléments suivants :
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 :
OutputYou 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
.
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 :
#!/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 :
OutputNew '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
:
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… :
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 :
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 :
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 :
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.
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 :
[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.
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.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
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!