Comment partager votre bureau dans Linux en utilisant x11vnc

Comment partager votre bureau dans Linux en utilisant x11vnc

Objectif

Apprendre à partager votre bureau à l'aide du protocole VNC et de l'application X11VNC

Exigences

  • Installation du package X11VNC

Conventions

  • # - nécessite une commande donnée pour être exécutée avec des privilèges racine non plus
    directement en tant qu'utilisateur racine ou en utilisant Sudo commande
  • $ - Commande donnée à exécuter en tant qu'utilisateur non privilégié régulier

Introduction

Alors que SSH est un outil essentiel pour chaque administrateur système, étant le protocole le plus utilisé et sécurisé pour l'administration à distance, même capable d'accorder l'accès au serveur d'affichage X11, via le transfert X11, ce n'est pas le bon outil à utiliser lorsque la cible souhaitée est de partager une session de bureau entière. Dans ce cas, le VNC Le protocole est notre ami. En l'utilisant, nous pouvons contrôler complètement une autre machine, partageant même des événements de clavier ou de souris.

Bien que beaucoup
Les implémentations du protocole existent sur GNU / Linux, et certaines d'entre elles sont intégrées à des environnements de bureau spécifiques, comme vino / vinagre Dans Gnome, dans ce tutoriel, nous nous concentrerons sur l'utilisation et la configuration de l'indépendance du bureau x11vnc application.

Installation

Le x11vnc L'application doit être déjà emballée et disponible dans vos référentiels de distribution préférés. L'installation sur Fedora, c'est juste une question de course:

$ sudo dnf installer x11vnc

Sur Debian, ou une distribution basée à Debian, la commande à utiliser est:

$ sudo apt-get install x11vnc

X11VNC est également disponible dans les référentiels Archlinux. Nous pouvons l'installer en utilisant Pac-Man:

$ sudo pacman -s x11vnc

Une fois installé, le programme peut être lancé directement à partir du terminal ou via GUI, en utilisant le lanceur de bureau qui devrait être trouvé dans le menu des applications.



Configuration du pare-feu

Pour pouvoir partager notre session de bureau en utilisant le protocole VNC, nous devons configurer le pare-feu afin qu'il autorise les connexions entrantes sur le port 5900 qui est le port VNC-Server par défaut. L'action exacte à effectuer dépend du logiciel de pare-feu que nous utilisons sur notre système. Lors de l'utilisation pare-feu Nous devons courir:

$ sudo Firewall-CMD --Add-Service = VNC-Server

Comme vous pouvez le voir, nous n'avons pas réellement spécifié le port pour être autorisé directement: nous avons plutôt utilisé le nom du service directement, car il est par défaut associé au port. N'oubliez pas, lorsque vous utilisez pare-feu, Si une zone n'est pas spécifiée avec le --zone Option, les règles spécifiées seront appliquées sur la par défaut.

Lors de l'utilisation ufw, Le pare-feu par défaut dans Ubuntu, la commande à utiliser est:

$ sudo ufw autoriser 5900 / TCP

De plus, si nous avons l'intention d'autoriser la connexion VNC à partir de machines en dehors de notre réseau local, nous devons configurer une règle d'autorisation pour le même port dans notre routeur et configurer le transfert IP à notre machine IP.

Se familiariser avec x11vnc

La façon la plus simple de commencer à utiliser x11vnc est d'invoquer le programme dans le terminal sans aucune option. Le programme doit être lancé sans les privilèges d'administrateur:

x11vnc

Par défaut, X11VNC utilisera l'affichage : 0, Cependant, cela peut être modifié en utilisant le -afficher option.

La première chose que nous recevrons après avoir exécuté la commande ci-dessus est un avertissement de ne pas utiliser de mot de passe pour la connexion. C'est attendu, car nous n'en avons pas encore configuré. L'exécution avec cette configuration est très dangereuse, car tout ordinateur ayant un accès au réseau à notre machine peut potentiellement afficher et contrôler notre bureau. La première chose que nous devons faire, alors, est de configurer le programme afin qu'il nécessite une authentification lorsque l'accès est demandé.



Restreindre l'accès avec un mot de passe

Il existe essentiellement trois façons de configurer l'authentification en utilisant x11vnc, elles correspondent à la -passage, -StorePasswd, et -file de passe options. Voyons brièvement comment ils modifient le comportement du programme.

La première méthode est représentée par l'utilisation du -passage Option qui nous permettons de fournir un mot de passe d'exécution, un seul coup et de texte brut dans le terminal: il ne sera enregistré nulle part et sera simplement utilisé pour la session lancée.

La deuxième méthode consiste à utiliser le -StorePasswd Option: il accepte deux arguments facultatifs: passer et déposer, Pour spécifier respectivement le mot de passe et le fichier dans lequel il doit être stocké. Cependant, s'il est utilisé sans arguments, il provoquera le mot de passe de manière interactive, et il sera stocké dans le ~ /.VNC / PASSWD déposer. Enfin, si l'option est utilisée avec un seul argument, elle sera interprétée comme le fichier dans lequel stocker le mot de passe. Veuillez noter que le fichier contenant le mot de passe ne sera pas crypté, mais qu'il est juste obscurci avec une clé fixe, donc seul l'utilisateur de confiance devrait être autorisé à y accéder.

Une fois le mot de passe enregistré, le programme quittera. À partir de ce moment, pour lancer une session VNC protégée par mot de passe, la commande suivante doit être émise:

$ x11vnc -rfbauth / chemin / vers / file de passe

Où, par défaut, / path / to / pass file correspondra à ~ /.VNC / PASSWD.

La troisième option que nous avons est d'utiliser le -file de passe drapeau. En l'utilisant, le mot de passe de la connexion est défini en lisant la première ligne d'un fichier existant, passé comme l'argument de l'option unique. Le comportement de l'option peut être modifié en préfixant l'argument du fichier. Par exemple, si le nom de fichier est préfixé avec RM:, Le fichier lui-même sera supprimé après que son contenu a été lu par le programme. Lorsque vous utilisez le CMD: Préfixe, plutôt, la chaîne spécifiée après le préfixe sera interprétée comme une commande externe, et sa sortie sera utilisée comme mot de passe. D'autres préfixes peuvent être utilisés avec cette option. Pour une référence complète, vous pouvez consulter la page manuelle du programme.

Fournir un mot de passe pour les séances de vue uniquement

Il est possible d'utiliser x11vnc Ainsi, la connexion créée s'exécutera en mode de vue uniquement. Cela signifie que les clients connectés ne seront autorisés qu'à observer la session partagée, mais ne pourront pas interagir avec elle. Pour s'exécuter dans ce mode, le programme doit être lancé avec le -afficher option. Il est possible de configurer un mot de passe Spefic pour ce type d'accès, afin d'obtenir une configuration plus grainée. Pour obtenir ce résultat, le -ViewPasswd L'option doit être utilisée, fournissant le mot de passe comme argument de chaîne. Cela nécessite cependant qu'un mot de passe complet est également fourni, en utilisant le -passage option que nous avons discutée ci-dessus.

Sécuriser la connexion à l'aide d'un tunnel crypté

Par défaut, une connexion VNC n'est pas cryptée, et cela peut représenter un risque de sécurité. Nous pouvons utiliser différentes approches pour résoudre ce problème. Le premier serait d'utiliser un VPN (Réseau privé virtuel), le second pour utiliser un tunnel SSL et le troisième à utiliser ssh.

Tout en décrivant comment configurer un VPN est hors de portée de cet article, nous verrons bientôt comment implémenter les deux autres options.

Utilisez un tunnel SSL / TLS

Nous pouvons crypter la connexion VNC en utilisant un tunnel SSL. Pour pouvoir y parvenir, nous devons utiliser le -SSL ou -étourdissement options. Le premier exige que x11vnc soit compilé avec libssl soutien. Cette option accepte un argument qui est le certificat en pem format à utiliser. Si cet argument n'est pas fourni et le OpenSSL L'utilitaire est installé sur notre système, un nouveau certificat sera généré et enregistré dans ~ /.VNC / CERTS / Server.pem.

Le -ssltunnel L'option, à la place, repose sur l'utilisation d'un programme externe, étourdissement Pour fournir une connexion SSL. As -SSL, il accepte également un certificat PEM comme argument. S'il n'est pas fourni, un nouveau sera généré et enregistré comme mentionné ci-dessus (ce comportement peut cependant être modifié, par exemple en utilisant la chaîne TMP comme argument - dans ce cas, un certificat temporaire sera généré).

Notez que dans les deux cas, le certificat généré automatiquement sera auto-signé, par conséquent, bien qu'il fournisse une connexion sécurisée, elle ne représentera pas une protection contre une attaque de l'homme au milieu. Lors de la génération du certificat, on nous demanderons si nous voulons fournir un mot de passe pour le protéger, et si c'est le cas, nous serons invités à l'insérer.

Enfin, pour pouvoir utiliser un tunnel SSL, l'application client doit prendre en charge SSL.



Utilisez un tunnel SSH

Pour utiliser un tunnel SSH, nous devons démarrer le serveur VNC à l'aide de SSH, avec cette commande (cela suppose que le port par défaut est utilisé):

$ SSH -T -L 5900: LocalHost: 5900 Remote-Machine 'X11VNC -LocalHost -Display: 0'

Vous connaissez probablement SSH, mais analysons cette commande. Tout d'abord, nous avons couru ssh avec le -t option, pour allouer un pseudo-terminal et avec le -L Un, nous avons essentiellement dit à transmettre le port 5900 sur notre machine locale (client) au même port sur la machine distante. Comme vous pouvez le voir, la commande x11vnc est lancée avec le -hôte local option. Ce que cela fait essentiellement, c'est de permettre uniquement les connexions de la même machine sur laquelle le serveur fonctionne. Cette option est également utilisée automatiquement lors de l'utilisation d'un tunnel SSL pour éviter de le contourner. Après cela, nous pouvons démarrer notre VNCViewer sur le client:

$ vncViewer -PreferreDencoding = Zrle localhost: 0

Notez que nous avons défini l'encodage préféré sur Zrle, Cela devrait aider les performances sur SSH.

Exécuter en mode graphique

Comme dit avant, x11vnc Peut également être utilisé en mode graphique, en utilisant le lanceur de bureau. Par défaut, le programme affichera une fenêtre dans laquelle nous pouvons sélectionner le port à utiliser, plus d'autres options:

Sélectionnez la fenêtre du port X11VNC

Après avoir cliqué sur le bouton «OK», une icône sera affichée dans le plateau système et une fenêtre avec ses propriétés apparaîtra à l'écran. Sur le côté gauche, certaines instructions utiles seront affichées pour un démarrage rapide. À partir de cette interface, nous pouvons également choisir un mot de passe de session et de vue uniquement:

Fenêtre de propriétés X11VNC

Conclusions

Bien que VNC n'apparaisse même pas pour représenter un substitut de SSH, il peut être le bon outil à utiliser pour certaines tâches spécifiques. Dans ce tutoriel, nous avons vu les étapes fondamentales nécessaires pour configurer et utiliser le x11vnc serveur. Bien que de nombreuses alternatives soient disponibles, X11VNC est un outil très simple et indépendant du bureau, qui peut être utilisé n'importe où.

Tutoriels Linux connexes:

  • Partagez votre écran de bureau avec VNC sur Linux
  • Configuration de l'accès au serveur VNC sur un redhat Linux
  • Utilitaires à télécommande VNC pour Linux
  • Choses à installer sur Ubuntu 20.04
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Linux: Configuration SSH
  • Comment profiter au maximum d'OpenSSH
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Commandes Linux: les 20 meilleures commandes les plus importantes que vous devez…
  • Commandes Linux de base