VPS sur Linux avec interface graphique : installation du serveur VNC sur Ubuntu 18.04

VPS sur Linux avec interface graphique : installation du serveur VNC sur Ubuntu 18.04
Certains utilisateurs louent des VPS Windows relativement peu coûteux pour exécuter un service de bureau à distance. La même chose peut être réalisée sur Linux sans avoir à héberger son propre matériel dans un data center ou à louer un serveur dédié. Certaines personnes ont besoin d'un environnement graphique familier pour les tests et le développement ou d'un bureau à distance avec une large bande passante pour travailler depuis des appareils mobiles. Il existe de nombreuses options pour utiliser le système Virtual Network Computing (VNC) basé sur le protocole Remote FrameBuffer (RFB). Dans cet article, nous allons expliquer comment le configurer sur une machine virtuelle avec n'importe quel hyperviseur.

Table des matières :

Choix du serveur VNC
Installation et configuration
Démarrage du service via systemd
Connexion au bureau

Choix du serveur VNC

Le service VNC peut être intégré dans le système de virtualisation, où l'hyperviseur le relie aux périphériques émulés sans nécessiter de configuration supplémentaire. Cette option implique des frais généraux significatifs et n'est pas prise en charge par tous les fournisseurs — même dans une réalisation moins gourmande en ressources, lorsque, au lieu d'émuler un véritable périphérique graphique, une abstraction simplifiée (framebuffer) est transmise à la machine virtuelle. Parfois, le serveur VNC est associé à un serveur X fonctionnant, mais cette méthode est plus adaptée pour accéder à une machine physique, tandis que sur une machine virtuelle, elle crée des difficultés techniques. Le plus simple est d'installer un serveur VNC avec un serveur X intégré. Cela ne requiert pas de matériel physique (carte vidéo, clavier et souris) ni leur émulation par l'hyperviseur, donc cela convient à tout type de VPS.

Installation et configuration

Nous aurons besoin d'une machine virtuelle avec Ubuntu Server 18.04 LTS dans sa configuration par défaut. Les dépôts standards de cette distribution contiennent plusieurs serveurs VNC : TightVNC, TigerVNC, x11vnc et d'autres. Nous avons choisi TigerVNC — un fork actuel de TightVNC, qui n'est plus supporté par son développeur. La configuration des autres serveurs se fait de manière similaire. Il est également nécessaire de choisir un environnement de bureau : selon nous, l'option optimale est XFCE en raison de ses exigences relativement faibles en ressources de calcul. Ceux qui le souhaitent peuvent installer un autre DE ou WM : tout dépend des préférences personnelles, mais le choix du logiciel influence directement le besoin en mémoire vive et en cœurs de calcul.

VPS sur Linux avec interface graphique : installation du serveur VNC sur Ubuntu 18.04

L'installation de l'environnement de bureau avec toutes les dépendances se fait avec la commande suivante :

sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

Ensuite, il est nécessaire d'installer le serveur VNC :

sudo apt-get install tigervnc-standalone-server tigervnc-common

L'exécuter avec des droits super-utilisateur n'est pas une bonne idée. Créons un utilisateur et un groupe :

sudo adduser vnc

VPS sur Linux avec interface graphique : installation du serveur VNC sur Ubuntu 18.04

Ajoutons l'utilisateur au groupe sudo afin qu'il puisse résoudre les tâches administratives liées. Si cela n'est pas nécessaire, cette étape peut être omise :

sudo gpasswd -a vnc sudo

À l'étape suivante, il faut lancer le serveur VNC avec les privilèges de l'utilisateur vnc pour créer un mot de passe sécurisé et des fichiers de configuration dans le répertoire ~/.vnc/. La longueur du mot de passe peut être de 6 à 8 caractères (les excès seront tronqués). Si nécessaire, un mot de passe uniquement pour la visualisation peut également être défini, c'est-à-dire sans accès au clavier et à la souris. Les commandes suivantes doivent être exécutées au nom de l'utilisateur vnc :

su - vnc
vncserver -localhost no

VPS sur Linux avec interface graphique : installation du serveur VNC sur Ubuntu 18.04
Par défaut, le protocole RFB utilise une plage de ports TCP de 5900 à 5906 - ce sont les dits ports d'affichage, chacun correspondant à un écran de serveur X. Les ports sont associés aux écrans de :0 à :6. L'instance du serveur VNC que nous avons lancée écoute le port 5901 (écran :1). D'autres instances peuvent fonctionner sur d'autres ports avec les écrans :2, :3, etc. Avant de procéder à la configuration supplémentaire, il faut arrêter le serveur :

vncserver -kill :1

La commande doit afficher un message similaire à : « Killing Xtigervnc process ID 18105… success! ».

Lors du démarrage de TigerVNC, un script ~/.vnc/xstartup est exécuté pour configurer les paramètres. Créons notre propre script, en sauvegardant d'abord la sauvegarde de celui-ci, s'il existe :

mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartup

La session de l'environnement de bureau XFCE est lancée par le script xstartup suivant :

#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &

La commande xrdb est nécessaire pour que le système VNC lise le fichier .Xresources dans le répertoire personnel. L'utilisateur peut y définir divers paramètres du bureau graphique : rendu des polices, couleurs du terminal, thèmes de curseur, etc. Le script doit être rendu exécutable :

chmod 755 ~/.vnc/xstartup

À ce stade, la configuration du serveur VNC est terminée. Si vous l'exécutez avec la commande vncserver -localhost no (sous l'utilisateur vnc), vous pourrez vous connecter avec le mot de passe défini précédemment et voir ce tableau :

VPS sur Linux avec interface graphique : installation du serveur VNC sur Ubuntu 18.04

Démarrage du service via systemd

Le démarrage manuel du serveur VNC n'est pas très adapté à un environnement de production, c'est pourquoi nous allons configurer un service système. Les commandes sont exécutées au nom de root (en utilisant sudo). Pour commencer, créons un nouveau fichier unitaire pour notre serveur :

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

Le symbole @ dans le nom permet de passer un argument pour configurer le service. Dans notre cas, cela définit le port d'affichage VNC. Le fichier unitaire se compose de plusieurs sections :

[Unit]
Description=Serveur TigerVNC
After=syslog.target network.target

[Service]
Type=simple
User=vnc 
Group=vnc 
WorkingDirectory=/home/vnc 
PIDFile=/home/vnc/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x960 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

Ensuite, il faut notifier systemd de la création du nouveau fichier et l'activer :

sudo systemctl daemon-reload
sudo systemctl enable vncserver@1.service

Le chiffre 1 dans le nom désigne le numéro de l'écran.

Arrêtons le serveur VNC, lançons-le comme un service et vérifions son statut :

# от имени пользователя vnc 
vncserver -kill :1

# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1

Si le service fonctionne, nous devrions obtenir un résultat similaire.

VPS sur Linux avec interface graphique : installation du serveur VNC sur Ubuntu 18.04

Connexion au bureau

Notre configuration n'utilise pas de cryptage, donc les paquets réseau peuvent être interceptés par des attaquants. De plus, les serveurs VNC contiennent souvent des vulnérabilités, il n'est donc pas conseillé de leur ouvrir l'accès depuis Internet. Pour se connecter en toute sécurité depuis un ordinateur local, il faut encapsuler le trafic dans un tunnel SSH, puis configurer le client VNC. Sous Windows, un client SSH graphique (comme PuTTY) peut être utilisé. Pour des raisons de sécurité, TigerVNC sur le serveur écoute uniquement localhost et n'est pas directement accessible depuis des réseaux publics :


sudo netstat -ap | more

VPS sur Linux avec interface graphique : installation du serveur VNC sur Ubuntu 18.04
Sous Linux, FreeBSD, OS X et d'autres systèmes d'exploitation de type UNIX, le tunnel depuis l'ordinateur client est effectué à l'aide de l'outil ssh (le sshd doit être en cours d'exécution sur le serveur VNC) :

ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ip

L'option -L lie le port 5901 de la connexion distante au port 5901 sur localhost. L'option -C active la compression, et -N indique à l'outil ssh qu'il n'est pas nécessaire d'exécuter de commande distante. L'option -l spécifie le login pour l'accès distant.

Après avoir configuré le tunnel sur l'ordinateur local, il est nécessaire de lancer le client VNC et d'établir une connexion avec l'hôte 127.0.0.1:5901 (localhost:5901), en utilisant le mot de passe précédemment défini pour accéder au serveur VNC. Maintenant, nous pouvons interagir en toute sécurité à travers un tunnel chiffré avec l'environnement de bureau XFCE sur VPS. Sur la capture d'écran dans l'émulateur de terminal, l'outil top est lancé pour montrer la faible consommation de ressources informatiques par la machine virtuelle. Tout dépendra ensuite des applications utilisées par l’utilisateur.

VPS sur Linux avec interface graphique : installation du serveur VNC sur Ubuntu 18.04
Installer et configurer un serveur VNC sous Linux peut se faire pratiquement sur n'importe quel VPS. Cela ne nécessite pas des configurations coûteuses et gourmandes en ressources avec émulation de carte vidéo, ni l'achat de licences logicielles commerciales. En plus de l'option de service système que nous avons considérée, il existe d'autres méthodes : démarrage en mode démon (via /etc/rc.local) au démarrage du système ou à la demande via inetd. Cette dernière est intéressante pour créer des configurations multi-utilisateurs. Le super serveur Internet lancera le serveur VNC et l'associera à un client, tandis que le serveur VNC créera un nouvel écran et commencera une session. Pour l'authentification, un gestionnaire d'affichage graphique peut être utilisé à l'intérieur (par exemple, LightDM), et après la déconnexion du client, la session sera fermée et tous les programmes travaillant sur l'écran seront terminés.

VPS sur Linux avec interface graphique : installation du serveur VNC sur Ubuntu 18.04

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster