Recherche de site Web

Comment installer et configurer l'accès à distance VNC pour le bureau GNOME sur CentOS 7


Introduction

VNC ou Virtual Network Computing est un protocole indépendant de la plateforme qui permet aux utilisateurs de se connecter à un système informatique distant et d'utiliser ses ressources depuis une interface graphique (GUI).

C'est comme contrôler à distance une application : les frappes au clavier ou les clics de souris de l'ordinateur client sont transmis sur le réseau à l'ordinateur distant. VNC permet également le partage du presse-papiers entre les deux ordinateurs. Si vous venez d'un environnement serveur Microsoft Windows, VNC est très similaire au Service Bureau à distance, sauf qu'il est également disponible pour OS X, Linux et d'autres systèmes d'exploitation.

Comme tout le reste dans le monde du réseautage, VNC est basé sur le modèle client-serveur : le serveur VNC s'exécute sur un ordinateur distant — votre Droplet — qui traite les requêtes des clients entrants.

Objectifs

Dans ce tutoriel, nous allons apprendre à installer et à configurer un serveur VNC sur CentOS 7. Nous allons installer le serveur TigerVNC, qui est disponible gratuitement sur le dépôt GitHub de TigerVNC.

Pour démontrer comment fonctionne VNC, nous allons également installer le bureau GNOME sur votre serveur CentOS. Nous créerons deux comptes utilisateurs et configurerons l'accès VNC pour eux. Nous testerons ensuite leur connectivité au bureau à distance, et enfin, nous apprendrons comment sécuriser la connexion distante via un tunnel SSH.

Prérequis

Les commandes, packages et fichiers présentés dans ce tutoriel ont été testés sur une installation minimale de CentOS 7. Nous recommandons ce qui suit :

  • Distro : CentOS 7, 64 bits
  • Exigences en ressources : Une Droplet avec 2 Go de RAM
  • Pour suivre ce tutoriel, vous devez utiliser un utilisateur sudo. Pour comprendre comment fonctionnent les privilèges sudo, vous pouvez vous référer à ce tutoriel de Linux-Console.net

Attention : Vous ne devez exécuter aucune commande, requête ou configuration de ce tutoriel sur un serveur Linux en production. Cela pourrait entraîner des problèmes de sécurité et des interruptions de service.

Étape 1 — Création de deux comptes utilisateur

Tout d'abord, nous allons créer deux comptes utilisateurs. Ces comptes se connecteront à distance à notre serveur CentOS 7 depuis des clients VNC.

  • joevnc
  • janevnc

Exécutez la commande suivante pour ajouter un compte utilisateur pour joevnc :

sudo useradd -c "User Joe Configured for VNC Access" joevnc

Ensuite, exécutez la commande passwd pour changer le mot de passe de joevnc :

sudo passwd joevnc

La sortie nous demandera un nouveau mot de passe. Une fois fourni, le compte sera prêt pour la connexion :

Changing password for user joevnc.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

Ensuite, créez un compte pour janevnc :

sudo useradd -c "User Jane Configured for VNC Access" janevnc

Définissez le mot de passe pour janevnc :

sudo passwd janevnc

Étape 2 — Installation de l'environnement de bureau GNOME

Nous allons maintenant installer le bureau GNOME. GNOME est un effort collaboratif : c'est une collection de logiciels libres et open source qui constitue un environnement de bureau très populaire. Il existe d'autres environnements de bureau comme KDE, mais GNOME est plus populaire. Nos utilisateurs VNC utiliseront GNOME pour interagir avec le serveur depuis son bureau :

sudo yum groupinstall -y "GNOME Desktop"

Selon la vitesse de votre réseau, cela peut prendre quelques minutes.

Une fois le groupe de paquets installé, redémarrez le serveur :

sudo reboot

Dépannage — Serveur bloqué lors de la phase de démarrage

Selon la configuration de votre serveur, lorsque la machine démarre, elle peut rester en phase de démarrage en affichant un message comme celui-ci :

Initial setup of CentOS Linux 7 (core)
1) [!] License information (Licence not accepted)
Please make your choice from above ['q' to quit | 'c' to continue | 'r' to refresh]:

Pour passer cela, appuyez sur 1 (lecture de la licence), puis sur 2 (accepter la licence), et ensuite sur C (pour continuer). Il se peut que vous deviez appuyer sur C deux fois ou plus. L'image ci-dessous montre ceci :

Si vous ne voyez pas cette erreur et que le processus de démarrage se déroule sans problème, c'est encore mieux - vous pouvez passer à l'étape suivante.

Étape 3 — Installer le serveur TigerVNC

TigerVNC est le logiciel qui nous permettra d'établir une connexion à distance au bureau.

Installez le serveur Tiger VNC :

sudo yum install -y tigervnc-server

Cela devrait afficher une sortie comme suit :

Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile

. . .

Running transaction
  Installing : tigervnc-server-1.2.80-0.30.20130314svn5065.el7.x86_64                                                      1/1
  Verifying  : tigervnc-server-1.2.80-0.30.20130314svn5065.el7.x86_64                                                      1/1

Installed:
  tigervnc-server.x86_64 0:1.2.80-0.30.20130314svn5065.el7

Complete!

Nous avons maintenant installé le serveur VNC et le bureau GNOME. Nous avons également créé deux comptes utilisateurs pour se connecter via VNC.

Étape 4 — Configuration du service VNC pour deux clients

Le serveur VNC ne démarre pas automatiquement lors de sa première installation. Pour vérifier cela, exécutez la commande suivante :

sudo systemctl status vncserver@:.service

La sortie sera comme ceci :

vncserver@:.service - Remote desktop service (VNC)
   Loaded: loaded (/usr/lib/systemd/system/vncserver@.service; disabled)
   Active: inactive (dead)

Vous pouvez également exécuter cette commande :

sudo systemctl is-enabled vncserver@.service

Cela devrait afficher une sortie comme celle-ci :

disabled

Alors pourquoi est-ce désactivé ? C’est parce que chaque utilisateur va démarrer une instance séparée du démon de service VNC. En d’autres termes, VNC ne fonctionne pas comme un seul processus qui sert toutes les demandes des utilisateurs. Chaque utilisateur se connectant via VNC devra démarrer une nouvelle instance du démon (ou l’administrateur système peut automatiser cela).

CentOS 7 utilise le démon systemd pour lancer d'autres services. Chaque service qui fonctionne nativement sous systemd possède un fichier d'unité de service qui est placé dans le répertoire /lib/systemd/system par l'installateur yum. Les processus qui sont démarrés automatiquement au démarrage ont un lien vers ce fichier d'unité de service placé dans le répertoire /etc/systemd/system/.

Dans notre cas, un fichier d’unité de service générique a été créé dans le répertoire /lib/systemd/system/, mais aucun lien n’a été créé sous /etc/systemd/system/. Pour tester cela, exécutez les commandes suivantes :

sudo ls -l /lib/systemd/system/vnc*

Vous devriez voir :

-rw-r--r--. 1 root root 1744 Jun 10 16:15 /lib/systemd/system/vncserver@.service

Vérifiez ensuite sous /etc/systemd/system/ :

sudo ls -l /etc/systemd/system/*.wants/vnc*

Celui-ci n’existe pas :

ls: cannot access /etc/systemd/system/*.wants/vnc*: No such file or directory

Donc, la première étape consiste à lancer deux nouvelles instances du serveur VNC pour nos deux utilisateurs. Pour ce faire, nous devrons créer deux copies du fichier d’unité de service VNC générique sous /etc/system/system. Dans l’extrait de code ci-dessous, vous créez deux copies avec deux noms différents :

sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:4.service

sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:5.service

Alors pourquoi avons-nous ajouté deux nombres (ainsi que les deux-points) dans les noms de fichiers copiés ?

Encore une fois, cela revient au concept de services VNC individuels. VNC lui-même fonctionne sur le port 5900. Comme chaque utilisateur exécutera son propre serveur VNC, chaque utilisateur devra se connecter via un port séparé. L'ajout d'un numéro dans le nom du fichier indique à VNC d'exécuter ce service en tant que sous-port de 5900. Ainsi, dans notre cas, le service VNC de joevnc fonctionnera sur le port 5904 (5900 + 4) et celui de janevnc sur 5905 (5900 + 5).

Modifiez ensuite le fichier d'unité de service pour chaque client. Ouvrez le fichier /etc/systemd/system/vncserver@:4.service avec l'éditeur vi :

sudo vi /etc/systemd/system/vncserver@:4.service

Un coup d'œil à la section « Quick HowTo » nous indique que nous avons déjà complété la première étape. Nous devons maintenant passer en revue les étapes restantes. Les commentaires nous disent également que VNC est une connexion non fiable. Nous en parlerons plus tard.

Pour l'instant, modifiez la section [Service] du fichier, en remplaçant les instances de <USER> par joevnc. Ajoutez également la clause -geometry 1280x1024 à la fin du paramètre ExecStart. Cela indique simplement à VNC la taille d'écran dans laquelle il doit démarrer. Vous modifierez un total de deux lignes. Voici à quoi le fichier édité devrait ressembler (notez que le fichier complet n'est pas affiché) :

# The vncserver service unit file
#
# Quick HowTo:
# 1. Copy this file to /etc/systemd/system/vncserver@:<display>.service
# 2. Edit <USER> and vncserver parameters appropriately
#   ("runuser -l <USER> -c /usr/bin/vncserver %i -arg1 -arg2")
# 3. Run `systemctl daemon-reload`
# 4. Run `systemctl enable vncserver@:<display>.service`
#

. . .

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/sbin/runuser -l joevnc -c "/usr/bin/vncserver %i -geometry 1280x1024" 
PIDFile=/home/joevnc/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

Enregistrez le fichier et quittez vi.

De même, ouvrez le fichier /etc/systemd/system/vncserver@:5.service dans vi et effectuez les modifications pour l'utilisateur janevnc :

sudo vi /etc/systemd/system/vncserver@:5.service

Voici juste la section [Service] avec les modifications indiquées :

[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/sbin/runuser -l janevnc -c "/usr/bin/vncserver %i -geometry 1280x1024"
PIDFile=/home/janevnc/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

Ensuite, exécutez les commandes suivantes pour recharger le démon systemd et également pour vous assurer que VNC se lance pour deux utilisateurs au démarrage.

sudo systemctl daemon-reload

Activez la première instance de serveur :

sudo systemctl enable vncserver@:4.service

Sortie :

ln -s '/etc/systemd/system/vncserver@:4.service' '/etc/systemd/system/multi-user.target.wants/vncserver@:4.service'

Activer la deuxième instance du serveur :

sudo systemctl enable vncserver@:5.service

Sortie :

ln -s '/etc/systemd/system/vncserver@:5.service' '/etc/systemd/system/multi-user.target.wants/vncserver@:5.service'

Vous avez maintenant configuré deux instances du serveur VNC.

Étape 5 — Configurer votre pare-feu

Ensuite, nous devrons configurer le pare-feu pour autoriser le trafic VNC uniquement à travers les ports 5904 et 5905. CentOS 7 utilise un pare-feu dynamique via le démon firewalld ; le service n'a pas besoin de redémarrer pour que les modifications prennent effet.

Le service firewalld devrait démarrer automatiquement au démarrage du système, mais il est toujours bon de vérifier :

sudo firewall-cmd --state

Ceci devrait montrer :

running

Si l'état est « non en cours d'exécution » pour une quelconque raison, exécutez la commande suivante pour vous assurer qu'il est en cours d'exécution :

sudo systemctl start firewalld

Ajoutez maintenant les règles pour les ports 5904 et 5905 :

sudo firewall-cmd --permanent --zone=public --add-port=5904-5905/tcp

Sortie :

success

Rechargez le pare-feu :

sudo firewall-cmd --reload

Sortie :

success

Étape 6 — Configuration des mots de passe VNC

Nous sommes à un pas de voir VNC en action. À cette étape, les utilisateurs devront définir leurs mot de passe VNC. Ce ne sont pas les mots de passe Linux des utilisateurs, mais les mots de passe pour se connecter aux sessions VNC.

Ouvrez une autre connexion terminal au serveur CentOS 7, et cette fois connectez-vous en tant que joevnc.

ssh joevnc@your_server_ip

Exécutez la commande suivante :

vncserver

Comme montré dans la sortie ci-dessous, le serveur demandera à joevnc de configurer un mot de passe VNC. Après avoir saisi le mot de passe, le programme affiche également un certain nombre de fichiers créés dans le répertoire personnel de l’utilisateur :

You will require a password to access your desktops.

Password:
Verify:
xauth:  file /home/joevnc/.Xauthority does not exist

New 'localhost.localdomain:1 (joevnc)' desktop is localhost.localdomain:1

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

Regardons la ligne New 'localhost.localdomain:1 (joevnc)' desktop is localhost.localdomain:1. localhost.localdomain était le nom du serveur dans notre exemple ; dans votre cas, il pourrait être différent. Notez le nombre après le nom du serveur : (1, séparé par deux-points). Ce n’est pas le nombre dans le fichier d’unité de service de joevnc (qui était 4). C’est parce que c’est le numéro d’affichage sur lequel la session de joevnc s’exécutera sur ce serveur, et non le numéro de port du service (5904) lui-même.

Ensuite, ouvrez une nouvelle session de terminal et connectez-vous en tant que janevnc. Ici aussi, démarrez le serveur VNC et définissez un mot de passe pour janevnc :

vncserver

Vous devriez voir une sortie similaire montrant que la session de janevnc s’exécutera sur l’affichage 2.

Enfin, rechargez les services depuis la session principale du terminal :

sudo systemctl daemon-reload
sudo systemctl restart vncserver@:4.service
sudo systemctl restart vncserver@:5.service

Étape 7 — Connexion à des bureaux distants avec un client VNC

Pour ce tutoriel, nous supposerons que les utilisateurs joevnc et janevnc essaient de se connecter au serveur CentOS 7 depuis leurs ordinateurs Windows.

Ils auront chacun besoin d'un client VNC pour Windows afin de se connecter au bureau à distance. Ce client est similaire à un client terminal comme PuTTY, sauf qu'il affiche une sortie graphique. Il existe plusieurs clients VNC disponibles, mais celui que nous utiliserons est RealVNC, disponible ici. VNC Viewer pour Mac OS X est disponible en téléchargement sur la même page, et la version Mac est assez similaire à celle de Windows.

Lorsque VNC Viewer est lancé, il affiche une boîte de dialogue comme celle-ci :

Dans le champ Serveur VNC, ajoutez l'adresse IP de votre serveur CentOS 7. Spécifiez le numéro de port 5904 après l'IP du serveur, séparé par un deux-points (:). Nous avons utilisé 5904 car c'est le port de service VNC pour joevnc.

Nous avons également décidé de laisser VNC Viewer choisir la méthode de chiffrement. Cette option ne chiffrera que le mot de passe envoyé sur le réseau. Toute communication ultérieure avec le serveur ne sera pas chiffrée. (Nous configurerons un tunnel SSH sécurisé à l'étape finale.)

En fait, un message d'avertissement montre exactement cela :

Acceptez l'avertissement pour l'instant. Une invite de mot de passe est affichée :

Entrez le mot de passe VNC de joevnc que vous avez défini précédemment.

Une nouvelle fenêtre s'ouvre montrant le bureau GNOME de notre serveur CentOS distant :

Acceptez le message de bienvenue par défaut.

Maintenant, joevnc peut lancer un outil graphique comme la calculatrice GNOME :

Vous pouvez laisser cette connexion de bureau ouverte.

Maintenant, janevnc peut également démarrer une autre session VNC avec le serveur CentOS. L'adresse IP est la même, et le port est 5905 :

Lorsque janevnc se connecte via VNC Viewer, un bureau vide avec un message de bienvenue est affiché, tout comme cela avait été le cas pour joevnc. En d'autres termes, les deux utilisateurs ne partagent pas les instances de bureau. Le bureau de joevnc devrait toujours afficher la calculatrice.

Pour fermer la session de bureau à distance, il suffit de fermer la fenêtre. Cependant, cela n'arrête pas le service VNC de l'utilisateur en arrière-plan sur le serveur. Si le service n'est pas arrêté ou redémarré et que la machine n'a pas été redémarrée, la même session de bureau sera présentée lors de la prochaine connexion.

Fermez les fenêtres du VNC Viewer pour joevnc et janevnc. Fermez également leurs sessions terminal. Depuis la fenêtre du terminal principal, vérifiez si les services VNC sont toujours en cours d'exécution :

sudo systemctl status vncserver@:4.service

La sortie montre que le bureau à distance fonctionne toujours :

vncserver@:4.service - Remote desktop service (VNC)
   Loaded: loaded (/etc/systemd/system/vncserver@:4.service; enabled)
   Active: active (running) since Sat 2014-11-01 12:06:49 EST; 58min ago
  Process: 2014 ExecStart=/sbin/runuser -l joevnc -c /usr/bin/vncserver %i -geometry 1280x1024 (code=exited, status=0/SUCCESS)
  
. . .

Vérifiez le deuxième service :

sudo systemctl status vncserver@:5.service

Celui-ci court aussi :

vncserver@:5.service - Remote desktop service (VNC)
   Loaded: loaded (/etc/systemd/system/vncserver@:5.service; enabled)
   Active: active (running) since Sat 2014-11-01 12:42:56 EST; 22min ago
  Process: 3748 ExecStart=/sbin/runuser -l janevnc -c /usr/bin/vncserver %i -geometry 1280x1024 (code=exited, status=0/SUCCESS)
  
. . .

Si vous vouliez vous reconnecter au bureau de joevnc à ce moment-là, vous verriez la même application calculatrice ouverte.

Cela présente des défis intéressants pour les administrateurs système. Si vous avez un certain nombre d'utilisateurs se connectant au serveur via VNC, vous pourriez vouloir trouver un moyen d'arrêter leurs services VNC lorsqu'ils ne sont plus nécessaires. Cela pourrait permettre d'économiser des ressources système précieuses.

Dépannage — Crashs du service VNC

Lorsque vous testez et jouez avec VNC, vous pouvez parfois constater que le service s'est planté et est irrécupérable. Lorsque vous essayez de vérifier le statut :

sudo systemctl status vncserver@:4.service

Ce long message d'erreur peut apparaître :

vncserver@:4.service - Remote desktop service (VNC)
   Loaded: loaded (/etc/systemd/system/vncserver@:4.service; enabled)
   Active: failed (Result: exit-code) since Fri 2014-11-07 00:02:38 EST; 2min 20s ago
  Process: 2221 ExecStart=/sbin/runuser -l joevnc -c /usr/bin/vncserver %i -geometry 1280x1024 (code=exited, status=2)
  Process: 1257 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)

Essayer de démarrer le service ne fonctionne pas :

sudo systemctl start vncserver@:4.service

Démarrage échoué :

Job for vncserver@:4.service failed. See 'systemctl status vncserver@:4.service' and 'journalctl -xn' for details.

Habituellement, la raison est assez simple. Vérifiez /var/log/messages :

sudo tail  /var/log/messages

L'erreur associée ressemblera à ceci :

Nov  7 00:08:36 localhost runuser: Warning: localhost.localdomain:4 is taken because of /tmp/.X11-unix/X4
Nov  7 00:08:36 localhost runuser: Remove this file if there is no X server localhost.localdomain:4
Nov  7 00:08:36 localhost runuser: A VNC server is already running as :4
Nov  7 00:08:36 localhost systemd: vncserver@:4.service: control process exited, code=exited status=2
Nov  7 00:08:36 localhost systemd: Failed to start Remote desktop service (VNC).
Nov  7 00:08:36 localhost systemd: Unit vncserver@:4.service entered failed state.
Nov  7 00:08:36 localhost systemd: Failed to mark scope session-c3.scope as abandoned : Stale file handle

Le remède consiste à supprimer le fichier dans le dossier /tmp :

sudo rm -i /tmp/.X11-unix/X4

Sortie :

rm: remove socket ‘/tmp/.X11-unix/X4’? y

Puis démarrez le service VNC :

sudo systemctl start vncserver@:4.service

Dépannage général

Bien que relativement rares, vous pouvez rencontrer d'autres erreurs en travaillant avec VNC. Par exemple, votre écran de bureau à distance peut devenir noir ou se bloquer, la session peut planter avec un message d'erreur cryptique, VNC Viewer peut ne pas se connecter correctement ou transmettre des commandes à l'interface graphique pour lancer des applications, etc.

Nous recommandons de vérifier le fichier /var/log/messages pour mieux comprendre. Parfois, vous devrez peut-être redémarrer votre serveur, ou dans des cas extrêmes, recréer le service VNC.

Les ressources système peuvent également être en cause ; vous devrez peut-être ajouter de la RAM supplémentaire à votre Droplet, etc.

Étape 8 — Sécurisation des sessions VNC via le tunneling SSH

Jusqu'à présent, joevnc et janevnc ont tous deux accédé à leurs bureaux distants via des canaux non chiffrés. Comme nous l'avons vu auparavant, VNC Viewer nous avertit de cela au moment de la connexion ; seul le mot de passe est chiffré au début de la session. Tout trafic réseau et transfert de données ultérieurs sont ouverts à l'interception par n'importe qui en cours de route.

À propos du tunneling SSH

C'est là que les sessions Secure Shell (SSH) peuvent être utiles. Avec SSH, VNC peut fonctionner dans le contexte d'une session chiffrée SSH. Cela est connu sous le nom de tunneling. En effet, le trafic VNC utilise le protocole SSH comme support, ce qui entraîne le chiffrement de toutes ses communications avec le serveur. On parle de tunneling parce que SSH fournit une protection englobante pour VNC et que VNC fonctionne comme si elle était dans un tunnel à l'intérieur de SSH. Le tunneling SSH peut également être utilisé pour d'autres protocoles comme POP, X ou IMAP.

Le tunneling SSH fonctionne avec le transfert de port, qui est essentiellement un moyen de traduire l'accès d'un port particulier vers un port différent sur une autre machine. Avec le transfert de port, lorsqu'une application cliente se connecte au port A fonctionnant sur la machine A, elle est transférée de manière transparente vers le port B fonctionnant sur la machine B. L'application cliente n'est pas consciente de cette translation et pense se connecter au port d'origine. Le transfert de port est l'une des fonctionnalités du protocole SSH.

Pour des informations plus détaillées sur le tunneling SSH, lisez ce tutoriel.

Dans ce tutoriel, nous avons configuré VNC pour fonctionner sur les ports 5904 (pour joevnc) et 5905 (pour janevnc).

Avec le transfert de port, nous pouvons configurer notre client VNC local pour se connecter au port 5900 sur l'ordinateur client local, et cela peut être mappé au port 5905 sur le serveur distant. Cet exemple est pour la connexion de janevnc, mais vous pourriez facilement suivre les mêmes étapes pour tout autre client.

Lorsque l'application client VNC démarre, elle peut être dirigée vers le port 5900 sur localhost, et notre redirection de port le transportera de manière transparente vers le port 5905 sur le serveur distant.

Remarque : Vous devrez démarrer une section SSH à chaque fois pour sécuriser la connexion.

OS X

Sur votre Mac, ouvrez Terminal.

Entrez les informations de connexion suivantes, en vous assurant de remplacer your_server_ip par l’adresse IP de votre serveur distant :

ssh -L 5900:your_server_ip:5905 janevnc@your_server_ip -N

Entrez le mot de passe UNIX de janevnc. La connexion semblera suspendue ; vous pouvez la laisser active aussi longtemps que vous utilisez le bureau à distance.

Passez maintenant aux instructions du VNC Viewer.

Windows

Pour sécuriser la session VNC de janevnc, nous supposons que l'ordinateur Windows local a PuTTY installé. PuTTY est gratuit et peut être téléchargé ici.

Si les sessions VNC et terminal de janevnc ne sont pas déjà fermées, fermez-les maintenant.

Démarrez PuTTY. Dans l'écran de session, assurez-vous de spécifier l'adresse IP du serveur et de donner un nom descriptif à la connexion, puis cliquez sur le bouton Enregistrer pour sauvegarder les détails de la connexion. Notez comment nous avons spécifié username@your_server_ip dans le champ Nom d'hôte :

Ensuite, développez l'élément de menu SSH dans le panneau de navigation de gauche, et sélectionnez l'élément X11. Cela affiche les propriétés du transfert X11 pour la session. Assurez-vous que la case Activer le transfert X11 est cochée. Cela garantit que SSH crypte le trafic X Windows qui circule entre le serveur et le client :

Enfin, sélectionnez SSH > Tunnels. Tapez 5900 dans le champ de port Source. Dans le champ Destination, spécifiez le nom ou l'adresse IP de votre serveur, suivi d'un deux-points et du numéro de port VNC pour l'utilisateur prévu. Dans notre cas, nous avons spécifié votre_ip_serveur:5905.

Alternativement, vous pourriez utiliser le port 5902. Le 2 dans ce cas serait le numéro d'affichage pour janevnc (rappelez-vous le message affiché lorsque janevnc a exécuté la commande vncserver).

Cliquez sur le bouton Ajouter et le mappage sera ajouté sous Ports transférés. C'est ici que nous ajoutons le transfert de port pour la session SSH ; lorsque l'utilisateur se connecte à localhost au port 5900, la connexion sera automatiquement tunnelisée via SSH vers le port 5905 du serveur distant.

Retournez aux éléments Sessions et enregistrez la session pour janevnc. Cliquez sur le bouton Ouvrir et une nouvelle session terminal s'ouvrira pour janevnc. Connectez-vous en tant que janevnc avec le mot de passe UNIX approprié :

Visionneuse VNC

Ensuite, relancez VNC Viewer. Cette fois, dans l'adresse du Serveur VNC, tapez <^> et laissez le serveur VNC choisir la méthode de chiffrement :

Cliquez sur le bouton Connecter.

Vous recevrez toujours la boîte de dialogue vous avertissant d’une session non cryptée, mais cette fois vous pouvez l’ignorer en toute sécurité. VNC Viewer ne sait pas sur quel port il est redirigé (cela a été configuré dans la session SSH qui vient de démarrer) et suppose que vous essayez de vous connecter à la machine locale.

Accepter cet avertissement affichera l'invite de mot de passe habituelle. Entrez le mot de passe VNC de janevnc pour accéder au bureau à distance.

Alors, comment savez-vous que la session était chiffrée ? Si vous y réfléchissez, nous avions configuré le transfert de port dans la session SSH. Si une session SSH n’avait pas été établie, le transfert de port n’aurait pas fonctionné. En fait, si vous fermez la fenêtre du terminal et vous déconnectez de la session PuTTY, puis essayez de vous connecter uniquement avec VNC Viewer, une tentative de connexion à localhost:5900 afficherait le message d’erreur suivant :

Donc, si la connexion localhost:5900 fonctionne, vous pouvez être sûr que la connexion est cryptée.

N'oubliez pas que vous voudrez établir la connexion SSH en premier chaque fois que vous utilisez VNC, afin de vous assurer que votre connexion est toujours cryptée.

Conclusion

Accéder à votre système CentOS Linux depuis une interface graphique peut rendre l'administration du système beaucoup plus simple. Vous pouvez vous connecter depuis n'importe quel système d'exploitation client et ne pas avoir à dépendre des panneaux de contrôle hébergés sur le web. VNC a une empreinte beaucoup plus petite comparée à la plupart des panneaux de contrôle.

Bien que nous ayons montré comment deux utilisateurs ordinaires peuvent se connecter avec leurs clients VNC, cela n’est guère pratique dans des environnements de production sérieux. En réalité, les utilisateurs auront des applications ou des navigateurs personnalisés pour accéder au serveur. Exécuter un certain nombre de services VNC pour chaque utilisateur crée également une charge inutile sur les ressources système, sans parler des risques inhérents qui y sont associés.

Si vous décidez d'installer et d'exécuter VNC sur votre serveur Linux de production, nous recommandons fortement de l'utiliser uniquement à des fins administratives.