Comment installer et configurer VNC sur Ubuntu 16.04

introduction

VNC, ou «Virtual Network Computing», 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 maîtrisent pas encore la ligne de commande.

Dans ce guide, nous allons configurer VNC sur un serveur Ubuntu 16.04 et nous y connecter en toute sécurité via un tunnel SSH. Le serveur VNC que nous allons utiliser est TightVNC, un package 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 compléter ce tutoriel, vous aurez besoin de:

  • Un Droplet Ubuntu 16.04 configuré via lesUbuntu 16.04 initial server setup tutorial, qui comprend le fait d'avoir un utilisateur sudo non root. Notez que ce didacticiel peut être complété à l'aide d'une gouttelette de n'importe quelle taille, mais un VNC construit sur une gouttelette plus petite peut avoir plus de limites en termes de fonctionnalités que celui d'une plus grande.

  • Un ordinateur local avec un client VNC installé qui prend en charge les connexions VNC sur des tunnels SSH. Si vous utilisez Windows, vous pouvez utiliser TightVNC, RealVNC ou UltraVNC. Les utilisateurs de Mac OS X peuvent utiliser le programme intégré de partage d'écran ou utiliser une application multiplate-forme telle que RealVNC. Les utilisateurs de Linux peuvent choisir parmi de nombreuses options:vinagre,krdc, RealVNC, TightVNC, etc.

[[step-1 -—- installation-the-desktop-environment-and-vnc-server]] == Étape 1 - Installation de l'environnement de bureau et du serveur VNC

Par défaut, un droplet Ubuntu 16.04 n’est pas fourni avec un environnement de bureau graphique ou un 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 officiel Ubuntu.

Sur votre serveur, installez les packages Xfce et TightVNC.

sudo apt-get update
sudo apt install xfce4 xfce4-goodies tightvncserver

Pour terminer la configuration initiale du serveur VNC après l’installation, utilisez la commandevncserver pour configurer un mot de passe sécurisé.

vncserver

Vous serez invité à entrer et à vérifier un mot de passe, ainsi qu’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 de VNC avec leur souris ou leur clavier. C'est une option utile si vous souhaitez montrer quelque chose à d'autres personnes utilisant votre serveur VNC, mais que ce n'est pas nécessaire.

L'exécution devncserver termine l'installation de VNC en créant des fichiers de configuration par défaut et des informations de connexion à utiliser par notre serveur. Avec ces packages installés, vous êtes maintenant prêt à configurer votre serveur VNC.

[[step-2 -—- configuration-the-vnc-server]] == Étape 2 - Configuration du serveur VNC

Premièrement, nous devons dire à notre serveur VNC quelles commandes exécuter lorsqu’il démarre. Ces commandes se trouvent dans un fichier de configuration appeléxstartup dans le dossier.vnc sous votre répertoire personnel. Le script de démarrage a été créé lorsque vous avez exécuté lesvncserver à l'étape précédente, mais nous devons modifier certaines des commandes du bureau Xfce.

Lorsque VNC est configuré pour la première fois, il lance une instance de serveur par défaut sur le port 5901. Ce port est appelé un port d'affichage et est appelé par VNC:1. VNC peut lancer plusieurs instances sur d'autres ports d'affichage, comme:2,:3, etc. Lorsque vous travaillez avec des serveurs VNC, n'oubliez pas que:X est un port d'affichage qui fait référence à5900+X.

Étant donné que nous allons modifier la configuration du serveur VNC, nous devons d’abord arrêter l’instance de serveur VNC exécutée sur le port 5901.

vncserver -kill :1

La sortie devrait ressembler à ceci, avec un PID différent:

OutputKilling Xtightvnc process ID 17648

Avant de commencer à configurer le nouveau fichierxstartup, sauvegardons l'original.

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

Créez maintenant un nouveau fichierxstartup avecnano ou votre éditeur de texte préféré.

nano ~/.vnc/xstartup

Collez ces commandes dans le fichier pour qu'elles soient exécutées automatiquement à chaque démarrage ou redémarrage du serveur VNC, puis enregistrez et fermez le fichier.

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

La première commande du fichier,xrdb $HOME/.Xresources, indique à l’infrastructure graphique de VNC de lire le fichier.Xresources de l’utilisateur du serveur. .Xresources est l'endroit où un utilisateur peut apporter des modifications à certains paramètres du bureau graphique, comme les couleurs du terminal, les thèmes de curseur et le rendu des polices. La deuxième commande indique simplement au serveur de lancer Xfce, où se trouvent 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 lui octroyer des privilèges exécutables.

sudo chmod +x ~/.vnc/xstartup

Maintenant, redémarrez le serveur VNC.

vncserver

Le serveur doit être démarré avec une sortie similaire à celle-ci:

OutputNew 'X' desktop is your_server_name.com:1

Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/liniverse.com:1.log

[[step-3 -—- testing-the-vnc-desktop]] == Étape 3 - Test du bureau VNC

Dans cette étape, nous allons tester la connectivité de votre serveur VNC.

Tout d'abord, nous devons créer une connexion SSH sur votre ordinateur local qui transmet en toute sécurité à la connexionlocalhost pour VNC. Vous pouvez le faire via le terminal sous Linux ou OS X avec la commande suivante. N'oubliez pas de remplaceruser etserver_ip_address par le nom d'utilisateur sudo non root et l'adresse IP de votre serveur.

ssh -L 5901:127.0.0.1:5901 -N -f -l username server_ip_address

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

Ensuite, vous pouvez maintenant utiliser un client VNC pour tenter une connexion au serveur VNC àlocalhost:5901. Vous serez invité à vous authentifier. Le mot de passe correct à utiliser est celui que vous avez défini à l'étape 1.

Une fois connecté, vous devriez voir le bureau Xfce par défaut. Ça devrait ressembler a quelque chose comme ca:

VNC connection to Ubuntu 16.04 server

Vous pouvez accéder aux fichiers de votre répertoire personnel à l’aide du gestionnaire de fichiers ou à partir de la ligne de commande, comme indiqué ici:

Files via VNC connection to Ubuntu 16.04

[[step-4 -—- creating-a-vnc-service-file]] == Étape 4 - Création d'un fichier de service VNC

Ensuite, nous allons configurer le serveur VNC en tant que service systemd. Cela permettra de le démarrer, de l'arrêter et de le redémarrer au besoin, comme tout autre service systemd.

Tout d'abord, créez un nouveau fichier d'unité appelé/etc/systemd/system/[email protected] en utilisant votre éditeur de texte préféré:

sudo nano /etc/systemd/system/[email protected]

Copiez et collez le texte suivant dans celui-ci. Assurez-vous de modifier la valeur deUser et le nom d'utilisateur dans la valeur dePIDFILE pour correspondre à votre nom d'utilisateur.

/etc/systemd/system/[email protected] [Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target

[Service]
Type=forking
User=sammy
PAMName=login
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

Enregistrez et fermez le fichier.

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

sudo systemctl daemon-reload

Activer le fichier d'unité.

sudo systemctl enable [email protected]

Le1 qui suit le signe@ indique le numéro d'affichage sur lequel le service doit apparaître, dans ce cas le:1 par défaut, comme indiqué ci-dessus.
Arrête l'instance actuelle du Serveur VNC s'il est toujours en cours d'exécution.

vncserver -kill :1

Puis démarrez-le comme vous le feriez avec tout autre service systemd.

sudo systemctl start vncserver@1

Vous pouvez vérifier que tout a commencé avec cette commande:

sudo systemctl status vncserver@1

Si cela a démarré correctement, le résultat devrait ressembler à ceci:

Sortie

[email protected] - TightVNC server on Ubuntu 16.04
   Loaded: loaded (/etc/systemd/system/[email protected]; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2016-04-25 03:21:34 EDT; 6s ago
  Process: 2924 ExecStop=/usr/bin/vncserver -kill :%i (code=exited, status=0/SUCCESS)

...

 systemd[1]: Starting TightVNC server on Ubuntu 16.04...
 systemd[2938]: pam_unix(login:session): session opened for user finid by (uid=0)
 systemd[2949]: pam_unix(login:session): session opened for user finid by (uid=0)
 systemd[1]: Started TightVNC server on Ubuntu 16.04.

Conclusion

Vous devriez maintenant avoir un serveur VNC sécurisé opérationnel sur votre serveur Ubuntu 16.04. Vous pourrez désormais gérer vos fichiers, vos logiciels et vos paramètres grâce à une interface graphique conviviale et familière.