Comment installer et configurer VNC sur Debian 11

De Get Docs
Aller à :navigation, rechercher

Introduction

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 aide les utilisateurs qui ne sont pas encore à l'aise avec la ligne de commande à gérer les fichiers, les logiciels et les paramètres sur un serveur distant.

Dans ce guide, vous allez configurer un serveur VNC avec TightVNC sur un serveur Debian 11 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 de :

  • Un serveur Debian 11 configuré en suivant le guide de configuration initiale du serveur Debian 11, 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 via 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 multiplateforme telle que RealVNC.
    • Sous Linux, vous pouvez choisir parmi de nombreuses options, y compris vinagre, krdc, RealVNC ou TightVNC.

Une fois que vous avez tout configuré, vous pouvez passer à la première étape.

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

Par défaut, un serveur Debian 11 n'est pas livré avec un environnement de bureau graphique ou un serveur VNC installé, vous commencerez donc par les installer.

Vous disposez de nombreuses options en ce qui concerne le serveur VNC et l'environnement de bureau que vous choisissez. Dans ce didacticiel, vous allez installer des packages pour le dernier environnement de bureau Xfce et le package TightVNC disponible dans le référentiel officiel Ubuntu. Xfce et TightVNC sont connus pour être légers et rapides, ce qui contribuera à garantir que la connexion VNC sera fluide et stable, même sur des connexions Internet plus lentes.

Après vous être connecté à votre serveur en SSH, mettez à jour votre liste de packages :

sudo apt update

Installez maintenant l'environnement de bureau Xfce, ainsi que le xfce4-goodies package, sur votre serveur :

sudo apt install xfce4 xfce4-goodies

Lors de l'installation, vous pouvez être invité à choisir un gestionnaire d'affichage par défaut pour Xfce. Un gestionnaire d'affichage est un programme qui vous permet de sélectionner et de vous connecter à un environnement de bureau via une interface graphique. Vous n'utiliserez Xfce que lorsque vous vous connecterez à un client VNC, et dans ces sessions Xfce, vous serez déjà connecté en tant qu'utilisateur Debian non root. Ainsi, pour les besoins de ce didacticiel, votre choix de gestionnaire d'affichage n'est pas pertinent. Sélectionnez-en un et appuyez sur ENTER.

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

sudo apt install tightvncserver

Ensuite, installez le dbus-x11 dépendance pour assurer une bonne connexion à votre serveur VNC :

sudo apt install dbus-x11

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

vncserver

Ensuite, 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 huit caractères seront automatiquement tronqués.

Une fois que vous avez vérifié le mot de passe, vous avez 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. C'est une option utile si vous souhaitez montrer quelque chose à d'autres personnes utilisant votre serveur VNC, mais ce 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)? 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

Ensuite, configurez-le pour lancer Xfce et donner accès au serveur via une interface graphique.

Étape 2 - Configuration du serveur VNC

Le serveur VNC doit savoir quelles commandes exécuter au 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 .vnc dossier sous votre répertoire personnel. Le script de démarrage a été créé lorsque vous avez exécuté le vncserver commande à l'étape précédente, mais vous créerez la vôtre 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 est appelé port d'affichage ', et est désigné par VNC comme :1. VNC peut lancer plusieurs instances sur d'autres ports d'affichage, comme :2, :3, etc.

Étant donné que vous allez modifier la configuration du serveur VNC, arrêtez d'abord l'instance de serveur VNC qui s'exécute sur le port 5901 avec la commande suivante :

vncserver -kill :1

Voici la sortie avec un PID spécifique à votre environnement de serveur :

OutputKilling Xtightvnc process ID 17648

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

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

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

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. Vous avez besoin de VNC pour démarrer votre environnement de bureau s'il n'est pas déjà démarré. Ajoutez les commandes suivantes au fichier :

~/.vnc/xstartup

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

Voici un bref aperçu de ce que fait chaque ligne :

  • #!/bin/bash: La première ligne est un shebang. Dans les fichiers exécutables en texte brut sur les plates-formes * nix, un shebang indique au système à quel interpréteur transmettre ce fichier pour exécution. Dans ce cas, vous transmettez le fichier à l'interpréteur Bash. Cela permettra à chaque ligne successive d'être exécutée comme des commandes, dans l'ordre.
  • xrdb $HOME/.Xresources: Cette commande indique au framework GUI de VNC de lire le .Xresources dossier. .Xresources C'est là qu'un utilisateur peut apporter des modifications à certains paramètres du bureau graphique, tels que les couleurs du terminal, les thèmes de curseur et le rendu des polices.
  • startxfce4 &: Cette commande indique au serveur de lancer Xfce. C'est ici que vous trouverez tous les logiciels graphiques dont vous avez besoin pour gérer confortablement votre serveur.

Lorsque vous avez terminé, enregistrez et quittez votre éditeur. Si vous utilisez nano, vous le faites en appuyant sur CTRL+X, alors Y, alors ENTER.

Pour vous assurer que le serveur VNC pourra utiliser correctement ce nouveau fichier de démarrage, vous devez le rendre exécutable :

sudo chmod +x ~/.vnc/xstartup

Maintenant, redémarrez le serveur VNC :

vncserver

La sortie ressemblera à ce qui suit :

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

Une fois la configuration en place, vous êtes prêt à vous connecter au serveur VNC à partir de votre 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. Pour vous connecter en toute sécurité, vous utiliserez un tunnel SSH pour vous connecter à votre serveur, puis vous direz à votre client VNC d'utiliser ce tunnel plutôt que d'établir une connexion directe.

Créez une connexion SSH sur votre ordinateur local qui transmet en toute sécurité au localhost connexion pour VNC. Vous pouvez le faire via le terminal sous Linux ou macOS avec la commande suivante. N'oubliez pas de remplacer sammy et your_server_ip avec votre nom d'utilisateur non root et l'adresse IP de votre serveur :

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

Veuillez noter qu'aucune sortie n'est renvoyée après avoir exécuté cette commande dans votre terminal sur votre machine locale. Vous devrez utiliser un client VNC pour afficher l'interface graphique.

Voici ce que cela ssh les options de la commande signifient :

  • La -L switch spécifie les liaisons de port. Dans ce cas, vous êtes un port de liaison 5901 de la connexion à distance au port 5901 sur votre ordinateur local.
  • La -C Le commutateur permet la compression pour aider à minimiser la consommation de ressources et accélérer les choses.
  • La -N l'interrupteur indique ssh que vous ne voulez pas exécuter une commande à distance.
  • La -l commutateur spécifie le nom de connexion à distance. Assurez-vous de remplacer sammy et your_server_ip avec le nom de votre utilisateur non-root et l'adresse IP de votre serveur.

Si vous utilisez PuTTY pour vous connecter à votre serveur, vous pouvez créer un tunnel SSH en cliquant avec le bouton droit sur la barre supérieure de la fenêtre du terminal, puis sélectionnez l'option Modifier les paramètres… :

![Cliquez avec le bouton droit sur la barre supérieure pour afficher l'option Modifier les paramètres](https://assets.digitalocean.com/articles/vnc_2004/vnc_putty_topbar_arrow.png "Cliquez avec le bouton droit sur la barre supérieure pour afficher l'option des paramètres. ”)

Trouvez la branche Connection dans le menu arborescent sur le côté gauche de la fenêtre de reconfiguration de PuTTY. Développez la branche SSH et cliquez sur Tunnels. Sur l'écran Options contrôlant le transfert de port SSH, saisissez 5901 comme Port source et localhost:5901 comme Destination, comme dans ce qui suit :

Ajout des informations de port et de destination dans PuTTY

Cliquez ensuite sur le bouton Ajouter, puis sur le bouton Appliquer pour implémenter le tunnel.

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 que vous avez défini à l'Étape 1.

Une fois connecté, le bureau Xfce par défaut apparaîtra comme suit :

Environnement de bureau Xfce lorsque vous y accédez pour la première fois via votre connexion VNC

Sélectionnez Utiliser la configuration par défaut pour configurer votre bureau.

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

![Recherche de fichiers via une connexion VNC à Debian 11](https://assets.digitalocean.com/articles/vnc_debian10/xfce-windows.png "Utilisation du client VNC pour rechercher des fichiers.")

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

Ensuite, vous configurerez le serveur VNC en tant que service.

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

Ensuite, vous configurerez le serveur VNC en tant que service systemd. Vous pouvez le démarrer, l'arrêter et le redémarrer selon vos besoins, comme tout autre service. Cela garantira également que VNC démarre lorsque votre serveur redémarre.

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

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

La @ Le symbole à la fin du nom vous permettra de passer 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. Assurez-vous de 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=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 ExecStartPre La commande arrête VNC s'il est déjà en cours d'exécution. La ExecStart La commande démarre VNC et définit la profondeur de couleur sur 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 lorsque vous avez terminé.

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

sudo systemctl daemon-reload

Ensuite, activez le fichier d'unité :

sudo systemctl enable [email protected]

La 1 suivant le @ signe indique sur quel numéro d'affichage le service doit apparaître, dans ce cas la valeur par défaut :1 comme discuté dans Étape 2.

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

vncserver -kill :1

Ensuite, démarrez-le comme vous le feriez pour tout autre service systemd :

sudo systemctl start [email protected]

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

sudo systemctl status [email protected]

S'il a démarré correctement, le résultat ressemblera à ce qui suit :

Output● [email protected] - Start TightVNC server at startup
Loaded: loaded (/etc/systemd/system/[email protected]; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-08-19 16:21:36 UTC; 5s ago
Process: 24469 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2)
Process: 24474 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :1 (code=exited, status=0/SUCCESS)
Main PID: 24482 (Xtightvnc)
. . .

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

Redémarrez votre tunnel SSH :

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

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

Conclusion

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