Comment installer et configurer VNC sur Debian 9

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 maîtrisent pas encore la ligne de commande.

Dans ce guide, vous allez configurer un serveur VNC sur un serveur Debian 9 et vous y connecter en toute sécurité via un tunnel SSH. Vous utiliserez TightVNC, un progiciel 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 serveur Debian 9 a été configuré en suivant les home guide de configuration initiale du serveur Debian 9, y compris un utilisateur non root avec + sudo + accès et un pare-feu.

  • Un ordinateur local avec un client VNC installé qui prend en charge les connexions VNC sur des tunnels SSH.

  • Sous Windows, vous pouvez utiliser TightVNC, RealVNC ou UltraVNC.

  • Sur macOS, vous pouvez utiliser le programme intégré Screen Sharing ou utiliser une application multiplate-forme, telle que RealVNC.

  • Sous Linux, vous pouvez choisir parmi de nombreuses options, notamment + vinagre +, + krdc +, RealVNC ou TightVNC.

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

Par défaut, aucun serveur Debian 9 n’est livré 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 paquets pour le dernier environnement de bureau Xfce et le paquet TightVNC disponible dans le référentiel officiel Debian.

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

sudo apt update

Maintenant, installez l’environnement de bureau Xfce sur votre serveur:

sudo apt install xfce4 xfce4-goodies

Au cours de l’installation, vous serez invité à sélectionner la disposition de votre clavier dans une liste d’options possibles. Choisissez celui qui convient à votre langue et appuyez sur + Entrée. L’installation va continuer.

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

sudo apt install tightvncserver

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

vncserver

Vous serez invité à entrer 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 avez vérifié le mot de passe, 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 de VNC avec leur souris ou leur clavier. Cette option est utile si vous souhaitez montrer quelque chose à d’autres personnes utilisant votre serveur VNC, mais cela n’est pas obligatoire.

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

OutputWould you like to enter a view-only password (y/n)?
xauth:  file /home//.Xauthority does not exist

New 'X' desktop is :1

Creating default startup script /home//.vnc/xstartup
Starting applications specified in /home//.vnc/xstartup
Log file is /home//.vnc/:1.log

Maintenant, configurons le serveur VNC.

Étape 2 - Configuration du serveur VNC

Le serveur VNC doit savoir quelles commandes exécuter lors de son démarrage. Plus précisément, VNC doit savoir à quel bureau graphique il doit se connecter.

Ces commandes se trouvent dans un fichier de configuration appelé + xstartup + dans le dossier + .vnc + de votre répertoire personnel. Le script de démarrage a été créé lorsque vous avez exécuté + vncserver + à l’étape précédente, mais nous allons créer notre propre fichier pour lancer le 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 s’appelle display port, et VNC le désigne par +: 1 +. VNC peut lancer plusieurs instances sur d’autres ports d’affichage, comme +: 2 +, +: 3 +, etc.

Dans la mesure où nous allons modifier la configuration du serveur VNC, arrêtez tout d’abord l’instance de serveur VNC exécutée sur le port + 5901 + à l’aide de la commande suivante:

vncserver -kill :1

La sortie devrait ressembler à ceci, même si vous verrez un PID différent:

OutputKilling Xtightvnc process ID

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

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

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

nano ~/.vnc/xstartup

Les commandes de ce fichier sont exécutées automatiquement à chaque démarrage ou redémarrage du serveur VNC. Nous avons besoin de VNC pour démarrer votre environnement de bureau s’il n’a pas déjà été démarré. Ajoutez ces commandes au fichier:

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

La première commande du fichier, + xrdb $ HOME / .Xresources +, indique au système d’interface graphique de VNC de lire le fichier + .Xresources + de l’utilisateur du serveur. + .Xresources + est l’endroit où un utilisateur peut modifier certains paramètres du bureau graphique, tels que les couleurs du terminal, les thèmes de curseur et le rendu des polices. La deuxième commande indique 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 le rendre exécutable.

sudo chmod +x ~/.vnc/xstartup

Maintenant, redémarrez le serveur VNC.

vncserver

Vous verrez une sortie semblable à celle-ci:

OutputNew 'X' desktop is :1

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

Une fois la configuration en place, connectons-nous au serveur à partir de notre ordinateur local.

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

VNC lui-même n’utilise pas de protocoles sécurisés lors de la connexion. Nous utiliserons un tunnel SSH pour établir une connexion sécurisée à notre serveur, puis demanderons à notre client VNC d’utiliser ce tunnel plutôt que d’effectuer 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:

ssh -L :127.0.0.1: -C -N -l

Le commutateur + -L + spécifie les liaisons de port. Dans ce cas, nous lions le port + 5901 + de la connexion distante au port + 5901 + sur votre ordinateur local. Le commutateur + -C + active la compression, tandis que le commutateur + -N + indique + ssh + que nous ne voulons pas exécuter de commande à distance. Le commutateur + -l + spécifie le nom de connexion distant.

N’oubliez pas de remplacer ` et ` par le nom d’utilisateur et l’adresse IP sudo non root de votre serveur.

Si vous utilisez un client SSH graphique, tel que PuTTY, utilisez ++ 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 à l’étape 1.

Une fois que vous êtes connecté, vous verrez le bureau Xfce par défaut.

image: https: //assets.digitalocean.com/articles/vnc_debian9/qOf5NgG.png [Connexion VNC au serveur Debian 9] Sélectionnez * Utilisez la configuration par défaut * pour configurer votre bureau rapidement.

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:

image: https: //assets.digitalocean.com/articles/vnc_debian9/j6HsSCr.png [Fichiers via une connexion VNC à Debian 9]

Sur votre ordinateur local, appuyez sur les touches + CTRL + C + de votre terminal pour arrêter le tunnel SSH et revenir à votre invite. Cela déconnectera également votre session VNC.

Ensuite, configurons le 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 tout autre service. Cela garantira également que VNC démarre au redémarrage de votre serveur.

Commencez par créer un nouveau fichier unité appelé + / etc / systemd / system / vncserver @ .service + à l’aide de votre éditeur de texte préféré:

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

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

Ajoutez les lignes suivantes au fichier. Veillez à modifier la valeur de * User *, * Group *, * WorkingDirectory * et le nom d’utilisateur dans la valeur de * PIDFILE * 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=
Group=
WorkingDirectory=/home/

PIDFile=/home//.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver  :%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 + démarre VNC et définit la profondeur de couleur sur une couleur 24 bits avec une résolution de 1280x800. Vous pouvez également modifier ces options de démarrage pour répondre à vos besoins.

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]

Le signe "+ 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 indiqué à 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 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:

Output● [email protected] - Start TightVNC server at startup
  Loaded: loaded (/etc/systemd/system/[email protected]; enabled; vendor preset: enabled)
  Active:  (running) since Wed 2018-09-05 16:47:40 UTC; 3s ago
 Process: 4977 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS)
 Process: 4971 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=0/SUCCESS)
Main PID: 4987 (Xtightvnc)

...

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

Redémarrez votre tunnel SSH:

ssh -L :127.0.0.1: -C -N -l

Ensuite, établissez une nouvelle connexion à l’aide de votre logiciel client VNC avec + localhost: 5901 + pour vous connecter à votre ordinateur.

Conclusion

Vous avez maintenant un serveur VNC sécurisé opérationnel sur votre serveur Debian 9. Vous pourrez désormais gérer vos fichiers, vos logiciels et vos paramètres grâce à une interface graphique conviviale et conviviale. Vous pourrez également exécuter des logiciels graphiques, tels que des navigateurs Web, à distance.