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

introduction

  • VNC * ou Virtual Network Computing est un protocole indépendant de la plate-forme qui permet aux utilisateurs de se connecter à un système informatique distant et d’utiliser ses ressources à partir d’une interface graphique.

C’est comme si vous contrôliez une application à distance: 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 de serveur Microsoft Windows, VNC ressemble beaucoup au service Bureau à distance, à la différence qu’il est également disponible pour OS X, Linux et d’autres systèmes d’exploitation.

Comme tout le reste du monde en réseau, VNC est basé sur le modèle de serveur client: le serveur VNC s’exécute sur un ordinateur distant, votre Droplet, qui traite les demandes client entrantes.

Buts

Dans ce didacticiel, nous allons apprendre à installer et à configurer un serveur VNC sur CentOS 7. Nous allons installer le serveur TigerVNC, qui est disponible gratuitement à partir du référentiel TigerVNC.

Pour démontrer le fonctionnement de VNC, nous allons également installer le bureau GNOME sur votre serveur CentOS. Nous allons créer deux comptes utilisateur et configurer leur accès à VNC. Nous allons ensuite tester leur connectivité au bureau distant et enfin apprendre à sécuriser la connexion distante via un tunnel SSH.

Conditions préalables

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

  • * Distro *: CentOS 7, 64 bits

  • * Besoins en ressources *: Un Droplet avec 2 Go de RAM

  • Pour suivre ce tutoriel, vous devez utiliser un utilisateur sudo. Pour comprendre le fonctionnement des privilèges sudo, vous pouvez vous référer à his tutoriel DigitalOcean

_ * Avertissement: * Vous ne devez exécuter aucune commande, requête ou configuration de ce didacticiel sur un serveur Linux de production. Cela pourrait entraîner des problèmes de sécurité et des temps d’arrêt. _

Étape 1 - Création de deux comptes d’utilisateurs

Tout d’abord, nous allons créer deux comptes d’utilisateurs. Ces comptes se connecteront à distance à notre serveur CentOS 7 à partir de 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

Exécutez ensuite la commande 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.

Créez ensuite 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 GNOME Desktop

Nous allons maintenant installer le bureau GNOME. GNOME est un effort de collaboration: c’est un ensemble de logiciels gratuits et à code source ouvert qui constituent un environnement de bureau très populaire. Il existe d’autres environnements de bureau tels que KDE, mais GNOME est plus populaire. Nos utilisateurs VNC utiliseront GNOME pour interagir avec le serveur à partir de 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é au démarrage

Selon la configuration de votre serveur, au démarrage de la machine, il peut rester en phase de démarrage et afficher 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 résoudre ce problème, appuyez sur * 1 * (lecture de la licence), puis sur * 2 * (accepter la licence), puis sur * C * (pour continuer). Vous devrez peut-être appuyer sur * C * deux fois ou plus. L’image ci-dessous montre ceci:

image: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/1.jpg [Message de la phase de démarrage dans CentOS 7 après l’installation de GNOME Desktop]

Si vous ne voyez pas cette erreur et que le processus de démarrage se déroule sans heurts, tant mieux - vous pouvez passer à l’étape suivante.

Étape 3 - Installation du serveur TigerVNC

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

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 le serveur VNC et le bureau GNOME installé. Nous avons également créé deux comptes d’utilisateur pour la connexion 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

Le résultat sera comme ceci:

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

Vous pouvez également exécuter cette commande:

sudo systemctl is-enabled [email protected]

Cela devrait montrer la sortie comme ceci:

disabled

Alors pourquoi est-il désactivé? C’est parce que chaque utilisateur démarrera une instance distincte du démon de service VNC. En d’autres termes, VNC ne s’exécute pas en tant que processus unique répondant à 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 pourra l’automatiser).

CentOS 7 utilise le démon pour lancer d’autres services. Chaque service exécuté en mode natif sous systemd a une unité de service file_ qui est placée dans le répertoire + / lib / systemd / system + par le programme d’installation yum. Les processus 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*

Tu devrais voir:

-rw-r--r--. 1 root root 1744 Jun 10 16:15 /lib/systemd/system/[email protected]

Puis vérifiez 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

La première étape consiste donc à démarrer deux nouvelles instances de serveur VNC pour nos deux utilisateurs. Pour ce faire, nous devrons faire deux copies du fichier d’unités de service VNC générique sous «+ / etc / system / system +». Dans le fragment de code ci-dessous, vous effectuez deux copies avec deux noms différents:

sudo cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:4.service

sudo cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:5.service

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

Encore une fois, cela revient au concept de services individuels de VNC. VNC fonctionne seul sur le port. Étant donné que 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 sous la forme d’un sub-port de + 5900 +. Donc, dans notre cas, le service VNC de * joevnc * sera exécuté sur le port (5900 + 4) et celui de * janevnc * (5900 + 5).

Ensuite, éditez 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 «Comment faire» explique que nous avons déjà terminé la première étape. Nous devons maintenant passer par les étapes restantes. Les commentaires nous indiquent également que VNC est une connexion non fiable. Nous en reparlerons plus tard.

Pour l’instant, éditez la section + [Service] + du fichier, en remplaçant les instances de + <USER> + par ++ '. Ajoutez également la clause `+ -geometry 1280x1024 + à la fin du paramètre + ExecStart +. Cela indique simplement à VNC la taille de l’écran dans laquelle il doit commencer. Vous allez modifier deux lignes au total. Voici à quoi devrait ressembler le fichier modifié (notez que tout le fichier 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  -c "/usr/bin/vncserver %i "
PIDFile=/home//.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 apportez les modifications à l’utilisateur * janevnc *:

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

Voici juste la section + [Service] + avec les modifications marqué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  -c "/usr/bin/vncserver %i "
PIDFile=/home//.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 et pour vous assurer que VNC démarre pour deux utilisateurs au moment du démarrage.

sudo systemctl daemon-reload

Activer 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 de 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 de serveur VNC.

Étape 5 - Configuration de votre pare-feu

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

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

sudo firewall-cmd --state

Cela devrait montrer:

running

Si l’état “n’est pas en cours d’exécution” pour une raison quelconque, 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 - Définition des mots de passe VNC

Nous sommes à deux pas de voir VNC en action. Dans cette étape, les utilisateurs devront définir leurs * mots 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 de terminal au serveur CentOS 7 et connectez-vous cette fois en tant que * joevnc *.

ssh joevnc@

Exécutez la commande suivante:

vncserver

Comme indiqué dans le résultat ci-dessous, le serveur demandera à * joevnc * de définir un mot de passe VNC. Après avoir saisi le mot de passe, le programme affiche également un certain nombre de fichiers en cours de création dans le répertoire de base 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 + Le nouveau bureau localhost.localdomain: 1 (joevnc) 'est localhost.localdomain: 1 +. * localhost.localdomain * était le nom du serveur dans notre exemple; dans votre cas, cela pourrait être différent. Notez le numéro après le nom du serveur: (* 1 *, séparés par un signe 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 la _ numéro d’affichage_ * la session de joevnc * sera exécutée sur ce serveur, pas le numéro de port du service (+ 5904 +) lui-même.

Ouvrez ensuite 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 un résultat similaire indiquant que la session de * janevnc * sera exécutée sur l’affichage * 2 *.

Enfin, rechargez les services à partir de la * session du terminal principal *:

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

Étape 7 - Connexion aux postes de travail distants avec un client VNC

Pour ce didacticiel, nous supposerons que les utilisateurs * joevnc * et * janevnc * tentent de se connecter au serveur CentOS 7 à partir de leurs ordinateurs Windows.

Ils auront chacun besoin d’un client VNC pour Windows pour se connecter au poste de travail distant. Ce client est comme un terminal client comme PuTTY, sauf qu’il affiche une sortie graphique. Il existe différents clients VNC disponibles, mais celui que nous allons utiliser est RealVNC, disponible à l’adresse here. VNC Viewer pour Mac OS X est disponible au téléchargement sur la même page et la version Mac est assez similaire à celle de Windows.

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

image: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/2.jpg [Interface du visualiseur RealVNC]

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

Nous avons également décidé de laisser VNC Viewer choisir la méthode de cryptage. Cette option ne chiffrera que le mot de passe envoyé sur le réseau. Toute communication ultérieure avec le serveur sera non cryptée. (Nous établirons un tunnel sécurisé SSH dans la dernière étape.)

image: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/3.jpg [Connexion au serveur CentOS 7 avec le visualiseur RealVNC en tant que joevnc]

En fait, un message d’avertissement indique simplement que:

image: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/4.jpg [Avertissement de cryptage VNC]

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

image: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/5.jpg [Invite de mot de passe VNC]

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

Une nouvelle fenêtre s’ouvre et montre le bureau GNOME de notre serveur CentOS distant:

image: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/6.jpg [Bureau à distance CentOS7]

Acceptez le message de bienvenue par défaut.

Maintenant, * joevnc * peut démarrer un outil graphique tel que la calculatrice GNOME:

image: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/7.jpg [Démarrage de la calculatrice GNOME à partir du bureau distant]

image: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/8.jpg [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:

image: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/9.jpg [Connexion au serveur CentOS 7 avec le visualiseur RealVNC en tant que janevnc]

Lorsque * janevnc * se connecte via VNC Viewer, un bureau vide avec un message de bienvenue s’affiche, comme il l’a été 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. Toutefois, 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 redémarré, la même session de bureau sera présentée à la prochaine ouverture de session.

Fermez les fenêtres de la visionneuse VNC pour * joevnc * et * janevnc *. Fermez également leurs sessions de terminal. Dans la fenêtre principale du terminal, vérifiez si les services VNC fonctionnent toujours:

sudo systemctl status vncserver@:4.service

La sortie indique que le poste de travail distant est toujours en cours d’exécution:

vncserver@:4.service - Remote desktop service (VNC)
  Loaded:
  Active:  since Sat 2014-11-01 12:06:49 EST; 58min ago
 Process: 2014 ExecStart=/sbin/runuser -l  -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 est également en cours d’exécution:

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

. . .

Si vous souhaitez vous reconnecter au bureau de * joevnc * à ce stade, vous verrez la même application de calculatrice ouverte.

Cela présente des défis intéressants pour les administrateurs système. Si plusieurs utilisateurs se connectent au serveur via VNC, vous souhaiterez peut-être trouver un moyen d’arrêter leurs services VNC lorsqu’ils ne sont plus nécessaires. Cela peut économiser des ressources système précieuses.

Dépannage - Crash du service VNC

Lorsque vous testez et jouez avec VNC, vous pouvez parfois constater que le service est tombé en panne et qu’il 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:  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

Échec du démarrage:

. 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 sous le dossier:

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 rare, vous pouvez rencontrer d’autres erreurs lorsque vous travaillez avec VNC. Par exemple, l’écran de votre poste de travail distant peut devenir vide ou se bloquer, la session peut se bloquer 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 vous recommandons de vérifier le fichier + / var / log / messages pour mieux comprendre. Vous devrez parfois redémarrer votre serveur ou, dans des cas extrêmes, recréer le service VNC.

Les ressources système peuvent également être un coupable. 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 cryptés. Comme nous l’avons vu précédemment, VNC Viewer nous en avertit au moment de la connexion. seul le mot de passe est crypté au début des sessions. Tout trafic réseau ultérieur et tout transfert de données peuvent être interceptés par n’importe qui au milieu.

  • À propos du tunneling SSH *

C’est là que les sessions Secure Shell (SSH) peuvent aider. Avec SSH, VNC peut s’exécuter dans le contexte d’une session cryptée SSH. Ceci est connu sous le nom de Tunnelling. En effet, le trafic VNC se greffe sur le protocole SSH, ce qui entraîne le chiffrement de toutes ses communications avec le serveur. Il s’appelle tunnelling parce que SSH fournit une protection enveloppante sur VNC et que VNC s’exécute comme dans un tunnel dans SSH. Le tunneling SSH peut également être utilisé pour d’autres protocoles tels que POP, X ou IMAP.

Le tunneling SSH fonctionne avec port forwarding, qui est essentiellement un moyen de traduire l’accès d’un port particulier à un autre port d’une autre machine. Avec la redirection de port, lorsqu’une application cliente se connecte au port A exécuté sur la machine A, elle est transmise de manière transparente au port B exécuté sur la machine B. L’application cliente n’a pas connaissance de cette traduction et pense qu’elle se connecte au port d’origine. Le transfert de port est l’une des fonctionnalités du protocole SSH.

Pour plus d’informations sur le tunneling SSH, consultez la page his tutorial.

Dans ce tutoriel, nous avons configuré VNC pour qu’il s’exécute sur les ports (pour * joevnc *) et (pour * janevnc *).

Avec la redirection de port, nous pouvons configurer notre client VNC local pour qu’il se connecte au port * 5900 * sur l’ordinateur client local, ce qui peut être mappé au port * 5905 * sur le serveur distant. Cet exemple concerne la connexion de * janevnc *, mais vous pouvez facilement suivre la même procédure pour n’importe quel autre client.

Lorsque l’application client VNC démarre, il peut être pointé sur le port * 5900 * sur * localhost * et notre transfert de port le transportera de manière transparente sur le port * 5905 * du serveur distant.

  • Remarque: * Vous devez 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 veillant à remplacer "++" par l’adresse IP de votre serveur distant:

ssh -L 5900::5905 janevnc@ -N

Entrez le mot de passe UNIX de * janevnc *. La connexion semblera se bloquer; vous pouvez le laisser fonctionner aussi longtemps que vous utilisez le poste de travail distant.

Passez maintenant aux instructions de la visionneuse VNC.

Les fenêtres

Pour sécuriser la session VNC de * janevnc *, nous supposerons que l’ordinateur Windows local est doté de PuTTY. PuTTY est gratuit et peut être téléchargé à partir de here.

Si les sessions VNC et Terminal de * janevnc * ne sont pas encore fermées, fermez-les maintenant.

Commencez Mastic. Dans l’écran de session, assurez-vous de spécifier l’adresse IP du serveur et d’attribuer un nom descriptif à la connexion, puis cliquez sur le bouton * Enregistrer * pour enregistrer les détails de la connexion. Notez comment nous avons spécifié + @ + dans le champ * Hostname *:

image: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/10.jpg [Détails de la session dans la configuration de PuTTY]

Ensuite, développez l’élément de menu * SSH * dans le volet de navigation de gauche et sélectionnez l’élément * X11 *. Ceci montre les propriétés de transfert X11 pour la session. Assurez-vous que la case à cocher * Activer le transfert X11 * est cochée. Cela garantit que SSH crypte le trafic X Windows transitant entre le serveur et le client:

image: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/11.jpg [Transfert X11 dans la configuration PuTTY]

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

Vous pouvez également utiliser le port * 5902 *. Le * 2 * dans ce cas serait le numéro d’affichage de * 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 là que nous ajoutons la redirection de port pour la session SSH; Lorsque l’utilisateur se connecte à l’hôte localhost sur le port * 5900 *, la connexion est automatiquement établie via SSH sur le port * 5905 * du serveur distant.

image: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/12.jpg [Tunneling SSH dans la configuration de PuTTY]

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

image: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/13.jpg [Session de terminal SSH pour janevnc]

  • Visionneuse VNC *

Ensuite, redémarrez VNC Viewer. Cette fois, dans l’adresse * VNC Server *, tapez <^> et laissez le serveur VNC choisir la méthode de cryptage:

image: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/14.jpg [Connexion de la visionneuse VNC à l’hôte local avec la redirection de port]

Cliquez sur le bouton * Connect *.

La boîte de dialogue vous avertira quand même d’une session non chiffrée, mais cette fois-ci, vous pourrez l’ignorer en toute sécurité. VNC Viewer ignore le port auquel il est redirigé (cela a été défini dans la session SSH qui vient de commencer) et suppose que vous essayez de vous connecter à la machine locale.

En acceptant cet avertissement, vous verrez l’invite de mot de passe familier. Entrez le mot de passe VNC de * janevnc * pour accéder au bureau distant.

Alors, comment savez-vous que la session a été cryptée? Si vous y réfléchissez, nous avons défini la redirection de port dans la session SSH. Si une session SSH n’était pas établie, le transfert de port n’aurait pas fonctionné. En fait, si vous fermez la fenêtre du terminal et que vous 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:

image: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/15.jpg [Message d’erreur du visualiseur VNC]

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

N’oubliez pas que vous souhaiterez établir la connexion SSH en premier à chaque fois que vous utilisez VNC, pour vous assurer que votre connexion est toujours cryptée.

Conclusion

L’accès à votre système Linux CentOS à partir d’une interface utilisateur graphique peut simplifier considérablement l’administration du système. Vous pouvez vous connecter à partir de n’importe quel système d’exploitation client et ne pas dépendre des panneaux de contrôle d’hébergement Web. VNC a une empreinte beaucoup plus petite que la plupart des panneaux de contrôle.

Bien que nous ayons montré comment deux utilisateurs ordinaires peuvent se connecter à leurs clients VNC, cela n’est guère pratique dans des environnements de production sérieux. En réalité, les utilisateurs disposeront d’applications ou de navigateurs personnalisés pour accéder au serveur. L’exécution de plusieurs 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 vous recommandons vivement de l’utiliser à des fins administratives uniquement.