- Introduction
- Buts
- Prérequis
- Etape 1 – Création de deux comptes d’utilisateur
- Étape 2 – Installation du bureau GNOME
- Dépannage – Serveur bloqué en phase de démarrage
- Etape 3 – Installation de TigerVNC Server
- Etape 4 – Configuration du service VNC pour deux clients
- Étape 5 – Configuration de votre pare-feu
- Étape 6 – Configuration des mots de passe VNC
- Étape 7 – Connexion aux bureaux distants avec un client VNC
- Dépannage – Le service VNC s’écrase
- Dépannage général
- Étape 8 – Sécuriser les sessions VNC grâce au tunnel SSH
- Conclusion
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 utilisateur graphique (GUI).
C’est comme contrôler à distance une application : les frappes ou les clics de souris de l’ordinateur client sont transmis par 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, sauf qu’il est également disponible pour OS X, Linux et d’autres systèmes d’exploitation.
Comme tout le reste dans le monde des réseaux, VNC est basé sur le modèle client-serveur : Le serveur VNC s’exécute sur un ordinateur distant – votre Droplet – qui sert les demandes des clients entrants.
Buts
Dans ce tutoriel, nous allons apprendre à installer et à configurer un serveur VNC sur CentOS 7. Nous installerons le serveur TigerVNC qui est librement disponible à partir du dépôt TigerVNC GitHub.
Pour démontrer le fonctionnement de VNC, nous installerons également le bureau GNOME sur votre serveur CentOS. Nous allons créer deux comptes d’utilisateur et configurer l’accès VNC pour eux. Nous testerons ensuite leur connectivité au bureau distant, et enfin, nous apprendrons à sécuriser la connexion à distance par le biais d’un tunnel SSH.
Prérequis
Les commandes, paquets et fichiers présentés dans ce tutoriel ont été testés sur une installation minimale de CentOS 7. Nous recommandons les éléments suivants:
- Distro : CentOS 7, 64 bits
- Ressources requises : 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 à ce tutoriel DigitalOcean
Avertissement : Vous ne devez pas exécuter les commandes, requêtes ou configurations de ce tutoriel sur un serveur Linux de production. Cela pourrait entraîner des problèmes de sécurité et des temps d’arrêt.
Etape 1 – Création de deux comptes d’utilisateur
D’abord, nous allons créer deux comptes d’utilisateur. 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
Puis exécutez la commande passwd pour changer le mot de passe de joevnc:
sudo passwd joevnc
La sortie nous demandera le nouveau mot de passe. Une fois fourni, le compte sera prêt à être connecté :
Changing password for user joevnc.New password:Retype new password:passwd: all authentication tokens updated successfully.
Puis, 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 du bureau GNOME
Maintenant, nous allons installer le bureau GNOME. GNOME est un effort de collaboration : 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é en phase de démarrage
Selon la façon dont votre serveur a été configuré, 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 :
Pour passer outre, appuyez sur 1 (lecture de la licence), puis 2 (acceptation de la licence), et enfin C (pour continuer). Il se peut que vous deviez appuyer sur C deux fois ou plus. L’image ci-dessous le montre :
Si vous ne voyez pas cette erreur et que le processus de démarrage est fluide, tant mieux – vous pouvez passer à l’étape suivante.
Etape 3 – Installation de TigerVNC Server
TigerVNC est le logiciel qui va nous permettre d’établir une connexion de bureau à distance.
Installer le serveur Tiger VNC :
sudo yum install -y tigervnc-server
Cela devrait donner un résultat comme le suivant :
Loaded plugins: fastestmirror, langpacksLoading 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/1Installed: tigervnc-server.x86_64 0:1.2.80-0.30.20130314svn5065.el7Complete!
Maintenant nous avons le serveur VNC et le bureau GNOME installés. Nous avons également créé deux comptes d’utilisateur pour se connecter via VNC.
Etape 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/[email protected]; disabled) Active: inactive (dead)
Vous pouvez également exécuter cette commande:
sudo systemctl is-enabled [email protected]
Cela devrait montrer une sortie comme ceci:
disabled
Alors pourquoi est-il désactivé ? C’est parce que chaque utilisateur va démarrer une instance distincte du démon de service VNC. En d’autres termes, VNC ne s’exécute pas comme un seul processus qui sert chaque demande de l’utilisateur. 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 a un fichier d’unité de service qui est placé sous le répertoire /lib/systemd/system
par l’installateur yum. Les processus qui sont lancé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/[email protected]
Vérifiez ensuite sous /etc/systemd/system/
:
sudo ls -l /etc/systemd/system/*.wants/vnc*
Celle-ci n’existe pas :
ls: cannot access /etc/systemd/system/*.wants/vnc*: No such file or directory
Donc, la première étape consiste à démarrer deux nouvelles instances du serveur VNC pour nos deux utilisateurs. Pour ce faire, nous devrons faire deux copies du fichier d’unité de service VNC générique sous /etc/system/system
. Dans l’extrait de code ci-dessous, vous faites deux copies avec deux noms différents :
sudo cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:4.servicesudo cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:5.service
Alors pourquoi avons-nous ajouté deux chiffres (en plus des deux points) dans les noms des fichiers copiés ?
Encore, cela revient au concept de services VNC individuels. VNC par lui-même fonctionne sur le port 5900. Puisque chaque utilisateur exécutera son propre serveur VNC, chaque utilisateur devra se connecter via un port distinct. L’ajout d’un numéro dans le nom du fichier indique à VNC d’exécuter ce service comme un sous-port de 5900
. Ainsi, dans notre cas, le service VNC de joevnc s’exécutera sur le port 5904 (5900 + 4) et celui de janevnc sur 5905 (5900 + 5).
Editer 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 regard sur la section « Quick HowTo » nous indique que nous avons déjà effectué 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 parlerons plus tard.
Pour l’instant, modifiez la section 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 commencer. Vous allez modifier deux lignes au total. Voici à quoi devrait ressembler le fichier modifié (notez que le fichier entier n’est pas montré):
# 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`#. . .Description=Remote desktop service (VNC)After=syslog.target network.targetType=forking# Clean any existing files in /tmp/.X11-unix environmentExecStartPre=/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.pidExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'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 faites les changements pour l’utilisateur janevnc:
sudo vi /etc/systemd/system/vncserver@:5.service
Voici juste la section avec les changements marqués:
Type=forking# Clean any existing files in /tmp/.X11-unix environmentExecStartPre=/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.pidExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
Puis, exécutez les commandes suivantes pour recharger le démon systemd et aussi pour vous assurer que VNC démarre pour deux utilisateurs au démarrage.
sudo systemctl daemon-reload
Activation de 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'
Activation de 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'
Maintenant vous avez configuré deux instances de serveur VNC.
Étape 5 – Configuration de votre pare-feu
Puis, nous devrons configurer le pare-feu pour autoriser le trafic VNC par les ports 5904 et 5905 uniquement. CentOS 7 utilise un pare-feu dynamique via le démon firewalld ; le service n’a pas besoin de redémarrer pour que les changements prennent effet.
Le service firewalld devrait démarrer automatiquement au moment du démarrage du système, mais il est toujours bon de vérifier :
sudo firewall-cmd --state
Cela devrait montrer :
running
Si l’état est « not running » pour une raison quelconque, exécutez la commande suivante pour vous assurer qu’il est en cours d’exécution :
sudo systemctl start firewalld
Maintenant, ajoutez les règles pour les ports 5904 et 5905:
sudo firewall-cmd --permanent --zone=public --add-port=5904-5905/tcp
Sortie:
success
Reload the firewall:
sudo firewall-cmd --reload
Sortie:
success
Étape 6 – Configuration des mots de passe VNC
Nous sommes à une étape 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 cette fois-ci connectez-vous en tant que joevnc.
ssh joevnc@your_server_ip
Exécutez la commande suivante :
vncserver
Comme le montre la sortie ci-dessous, le serveur demandera à joevnc de configurer un mot de passe VNC. Après avoir tapé le mot de passe, le programme montre é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 existNew 'localhost.localdomain:1 (joevnc)' desktop is localhost.localdomain:1Creating default startup script /home/joevnc/.vnc/xstartupStarting applications specified in /home/joevnc/.vnc/xstartupLog 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 un 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 dans ce serveur, et non le numéro de port du service (5904
) lui-même.
Puis 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 fonctionnera sur l’écran 2.
Enfin, rechargez les services à partir de la session de terminal principale :
sudo systemctl daemon-reloadsudo systemctl restart vncserver@:4.servicesudo systemctl restart vncserver@:5.service
Étape 7 – Connexion aux 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 à partir de leurs ordinateurs Windows.
Ils auront chacun besoin d’un client VNC pour Windows pour se connecter au bureau distant. Ce client est tout comme un client terminal comme PuTTY, sauf qu’il affiche une sortie graphique. Il existe différents clients VNC, 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 VNC Server, 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 deux points ( :). Nous avons utilisé 5904 car c’est le port du service VNC pour joevnc.
Nous avons également décidé de laisser VNC Viewer choisir la méthode de cryptage. Cette option permettra de crypter uniquement le mot de passe envoyé sur le réseau. Toute communication ultérieure avec le serveur sera non chiffrée. (Nous configurerons un tunnel SSH sécurisé dans la dernière étape.)
En fait, un message d’avertissement montre justement cela:
Accepter l’avertissement pour le moment. Une invite de mot de passe est affichée:
Entrez le mot de passe VNC de joevnc que vous avez défini plus tôt.
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 démarrer un outil graphique comme la calculatrice GNOME:
Vous pouvez laisser cette connexion au bureau ouverte.
Maintenant janevnc peut aussi 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 il a été affiché pour joevnc. En d’autres termes, les deux utilisateurs ne partagent pas les instances du 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 eu de redémarrage, la même session de bureau serait présentée à la prochaine connexion.
Fermer les fenêtres VNC Viewer pour joevnc et janevnc. Fermez également leurs sessions de terminal. À partir de la fenêtre principale du terminal, 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 est toujours en cours d’exécution:
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 est également en cours d’exécution:
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 stade, vous verriez la même application de calculatrice ouverte.
Cela présente quelques défis intéressants pour les administrateurs système. Si vous avez un certain nombre d’utilisateurs se connectant au serveur via VNC, vous pouvez vouloir concevoir un moyen d’arrêter leurs services VNC lorsqu’ils ne sont plus nécessaires. Cela peut économiser quelques précieuses ressources système.
Dépannage – Le service VNC s’écrase
Alors que vous testez et jouez avec VNC, vous pouvez parfois trouver que le service s’est écrasé 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 s’afficher :
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)
Tenter de démarrer le service ne fonctionne pas :
sudo systemctl start vncserver@:4.service
Échec du démarrage :
Job for vncserver@:4.service failed. See 'systemctl status vncserver@:4.service' and 'journalctl -xn' for details.
En général, 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/X4Nov 7 00:08:36 localhost runuser: Remove this file if there is no X server localhost.localdomain:4Nov 7 00:08:36 localhost runuser: A VNC server is already running as :4Nov 7 00:08:36 localhost systemd: vncserver@:4.service: control process exited, code=exited status=2Nov 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 est de supprimer le fichier sous 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 rare, vous pouvez rencontrer d’autres erreurs en travaillant avec VNC. Par exemple, l’écran de votre bureau distant peut devenir vide ou se bloquer, la session peut se 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 vous recommandons de consulter le fichier /var/log/messages
pour mieux comprendre. Parfois, vous devrez redémarrer votre serveur ou, dans des cas extrêmes, recréer le service VNC.
Les ressources du système peuvent également être un coupable ; vous devrez peut-être ajouter de la RAM supplémentaire à votre Droplet, etc.
Étape 8 – Sécuriser les sessions VNC grâce au tunnel SSH
Jusqu’à présent, joevnc et janevnc accédaient tous deux à leurs bureaux distants par 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 et transfert de données ultérieur est ouvert à quiconque peut l’intercepter au milieu.
A propos de SSH Tunnelling
C’est là que les sessions Secure Shell (SSH) peuvent aider. Avec SSH, VNC peut s’exécuter dans le contexte d’une session chiffrée SSH. C’est ce qu’on appelle le tunnelling. En effet, le trafic VNC s’appuie sur le protocole SSH, de sorte que toutes les communications avec le serveur sont cryptées. On parle de tunnellisation parce que SSH fournit une protection enveloppante à VNC et que VNC s’exécute comme dans un tunnel au sein de SSH. La tunnellisation SSH peut également être utilisée pour d’autres protocoles tels que POP, X ou IMAP.
La tunnellisation SSH fonctionne avec la redirection de port qui est essentiellement un moyen de traduire l’accès d’un port particulier à un port différent sur une autre machine. Avec la redirection de port, lorsqu’une application client se connecte au port A exécuté sur la machine A, elle est redirigée de manière transparente vers le port B exécuté sur la machine B. L’application client n’est pas consciente de cette traduction et pense qu’elle se connecte au port d’origine. La translation 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 qu’il fonctionne sur les ports 5904 (pour joevnc) et 5905 (pour janevnc).
Avec la redirection 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 pointée vers le port 5900 sur localhost, et notre redirection de port la transportera de manière transparente vers le port 5905 sur le serveur distant.
Note : 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 veillant à 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 se suspendre ; vous pouvez la maintenir en cours d’exécution aussi longtemps que vous utilisez le bureau distant.
Passez maintenant aux instructions relatives à la visionneuse VNC.
Windows
Pour sécuriser la session VNC de janevnc, nous supposerons que l’ordinateur Windows local a PuTTY installé. PuTTY est gratuit et peut être téléchargé à partir d’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 Hostname:
Puis, développez l’élément de menu SSH dans le volet de navigation gauche, et sélectionnez l’élément X11. Cela affiche les propriétés de transfert X11 pour la session. Assurez-vous que la case à cocher pour Activer le transfert X11 est cochée. Cela garantit que SSH chiffre le trafic X Windows qui circule entre le serveur et le client :
Enfin, sélectionnez SSH > Tunnels. Tapez 5900
dans le champ 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 pour l’utilisateur prévu. Dans notre cas, nous avons spécifié your_server_ip:5905
.
Au contraire, vous pouvez 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 la redirection de port pour la session SSH ; lorsque l’utilisateur se connecte à localhost au port 5900, la connexion sera automatiquement tunnelée par 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 de terminal s’ouvrira pour janevnc. Connectez-vous en tant que janevnc avec le mot de passe UNIX approprié:
VNC Viewer
Démarrez ensuite VNC Viewer à nouveau. Cette fois, dans l’adresse du serveur VNC, tapez <^> et laissez le serveur VNC choisir la méthode de cryptage :
Cliquez sur le bouton Connecter.
Vous obtiendrez toujours la boîte de dialogue vous avertissant d’une session non cryptée, mais cette fois vous pouvez l’ignorer sans risque. VNC Viewer ne connaît pas le port vers lequel il est redirigé (celui-ci a été défini dans la session SSH qui vient de démarrer) et suppose que vous essayez de vous connecter à la machine locale.
Accepter cet avertissement fera apparaître l’invite familière de mot de passe. 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 avions défini le transfert de port dans la session SSH. Si une session SSH n’était pas établie, la redirection 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 avec VNC Viewer seul, une tentative de connexion à localhost:5900
montrerait 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 utiliserez VNC, pour vous assurer que votre connexion est toujours cryptée.
Conclusion
Accéder à votre système CentOS Linux à partir d’un frontal GUI peut rendre l’administration du système beaucoup plus simple. Vous pouvez vous connecter à partir de n’importe quel système d’exploitation client et n’avez pas à dépendre des panneaux de contrôle d’hébergement basés sur le Web. VNC a une empreinte beaucoup plus petite par rapport à 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 les 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 du 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 fortement de l’utiliser uniquement à des fins administratives.