VNC sur SSH pour des connexions sécurisées
Attention
Cet article a été publié il y a plus d'un an, il peut y avoir des développements été.
S'il vous plaît prendre en compte.
Aujourd'hui, nous voyons comment contrôler une machine distante via une interface graphique avec VNC via un tunnel SSH sécurisé.
Pour ceux qui ne savent pas, en un mot, VNC (Virtual Network Computing) est un système d'affichage à distance qui vous permet de voir un environnement “bureau” (GUI) fonctionnant non seulement sur la machine sur laquelle il fonctionne, mais partout depuis internet depuis une grande variété d'architectures.
SSH (Enveloppe de protection) il s'agit plutôt d'un programme permettant de se connecter et d'exécuter des commandes sur une machine distante. La communication s'effectue de manière cryptée (tunnelisation) entre deux hôtes peu fiables sur des réseaux même différents. Les connexions X11 et les ports TCP/IP peuvent être acheminés via SSH.
Et c'est précisément X11 que nous souhaitons aborder dans le tunnel SSH. De cette façon, nous aurons une connexion X11 non sécurisée dans un tunnel SSH sécurisé (sécuriser toute l’opération).
Au final ce n'est pas une opération complexe. Nous devons demander à SSH de créer un tunnel local qui transmet localhost sur le port 5901 sur le même port sur une machine distante, mais via le port SSH par défaut (22). La condition essentielle est donc l'accès à la machine distante via le port 22. Faisons attention, puis, aussi pour redirection de port sur le routeur, à pare-feu physiques et à tout logiciel pare-feu (iptables) installé sur les clients et les serveurs. Sans, la procédure ne peut pas fonctionner.
Ce qui est necessaire?
Sur la machine locale:
- OuvertSSH
- VNC Viewer (n'importe quel visualiseur VNC)
Sur la machine distante:
- Serveur OpenSSH
- Serveur VNC
L'installation est très basique. Pour Debian et ses dérivés:
~# apt install openssh vnc-server vnc-viewer
Dérivé de RedHat:
~# yum install openssh-server openssh-clients vnc-server vnc-viewer
Nous pouvons utiliser n'importe quel visualiseur VNC. Je préfère utiliser le viewer classique présent dans les dépôts.
Créer le tunnel SSH
La première chose à faire est de créer la connexion cryptée qui achemine les paquets depuis localhost (porta 5901) tous les hôtes à distance (porta 5901) à travers la porte 22. Nous faisons cela en une seule commande:
~$ ssh -L 5901:localhost:5901 user@REMOTE_IP
Avec user
nous voulons dire l'utilisateur existant sur la machine distante, avec REMOTE_IP nous entendons l'adresse IP distante de la machine à laquelle nous voulons nous connecter. Attention: root n'est pas toujours configuré pour accepter les connexions SSH entrantes.
Si c'est la première fois que vous vous connectez via SSH à cet hôte, il vous sera demandé si vous souhaitez ajouter cet hôte particulier à la liste des hôtes connus.: ~/.ssh/known_hosts
.
À ce stade, nous devons saisir le mot de passe de l'utilisateur enregistré sur la machine distante à laquelle nous voulons nous connecter..
Pour une connexion encore plus sécurisée il serait conseillé d'utiliser l'authentification SSH sur les clés. Peut-être que j'en parlerai dans un article plus tard.
Connectez le client VNC
Nous devons maintenant activer le client VNC. Comme mentionné, peu importe celui que vous utilisez, ce qui compte, c'est l'adresse que vous utilisez pour établir la connexion. Au lieu d'écrire l'IP de la machine distante, nous devrons écrire localhost:5091
. C'est parce que nous avons déjà créé un tunnel à partir du client:5901 le serveur:5901. Une fois connecté à localhost, le client VNC utilisera le tunnel SSH nouvellement créé pour se connecter au serveur sur le port. 5901.
Bien qu'il existe des clients qui intègrent la fonction SSH dans la visionneuse VNC, il s'agit de la méthode la plus simple pour comprendre ce qui se passe lorsque nous transmettons un flux de données via SSH..
0 commentaires