Remplacer TeamViewer sous Linux par VNC, SSH et un serveur relais transperceur de NAT

Nous allons étudier une alternative de prise de contrôle à distance à base de logiciels libres permettant d’effacer la plupart des limites réseau.

Supposons que Camille est à Caen et que Paul est à Paris. Camille veut dépanner Paul en prenant le contrôle de son ordinateur. Le problème, c’est que Camille et Paul sont derrière des box ADSL comportant un NAT : ils peuvent sortir sur Internet mais Internet ne peut pas entrer chez eux.

D’habitude, Camille et Paul utilisent TeamViewer, une solution propriétaire qui fournit un serveur intermédiaire et résout tous les problèmes avec une pincée de magie. Que Paul soit derrière un proxy à l’hôtel ou derrière un firewall à son travail, Camille pouvait toujours l’aider (Paul a vraiment du mal avec l’informatique).

Seulement Paul s’est amélioré et se demande s’il ne pourrait pas utiliser des outils Libres (Paul se pose beaucoup de questions, c’est pour ça qu’on l’aime).

Camille et Paul veulent utiliser VNC, le standard cross-plateforme de la prise de contrôle à distance. Pour se joindre, ils vont avoir recours à un serveur intermédiaire sur Internet ouvert en entrée et en sortie. Rappelons à nos deux amis d’installer openssh-server sur le serveur, que le port VNC par défaut est 5900 et que tout port au dessus de 1024 ne requiers plus le droit root.

Paul va ouvrir une connexion SSH sur le serveur pour l’autoriser à remonter jusqu’à lui sur le port VNC de son ordinateur. En faisant cela, Paul va utiliser un port du serveur sur lequel communiquer avec lui de manière sécurisée. Paul choisit au hasard un port libre sur le serveur, le 1234. Voici ce que Paul écrit dans sa console :
ssh -R 1234:localhost:5900 utilisateur@10.5.1.1

Paul en profite pour démarrer un serveur VNC, vino, installé par défaut sous Ubuntu. Sous Gnome, il faut ouvrir Paramètres / Partage et activer le partage d’écran. Sous Unity, il faut ouvrir l’application « Partage d’écran » et l’activer.

Camille, de son côté, va à son tour ouvrir une connexion SSH sur le serveur pour raccorder le port 1234 que Paul a utilisé sur un port local de son propre ordinateur. Elle choisit le port 9876 qu’elle n’utilise pas actuellement. Voici ce qu Camille écrit sur sa console :
ssh -L 9876:localhost:1234 utilisateur@10.5.1.1

À présent, Camille peut envoyer des données à Paul dans un tunnel complètement sécurisé ! Son port local 9876 est comme une porte des étoiles menant vers le serveur VNC sur l’ordinateur de Paul. Ah, que c’était bien Stargate SG-1.

Camille a installé Remmina depuis un moment, c’est son client VNC favori. Elle le lance et se connecte à Paul en utilisant l’adresse localhost et le port 9876.

On pourrait remarquer que dans cette user-story, le port 22 SSH est toujours ouvert en sortie pour Camille comme pour Paul. La qualité du réseau est parfois restreinte par des pare-feux appliquant un filtrage de ports, allant jusqu’à l’inspection du protocole des paquets. HTTPS et SSH présentent une si grande similitude vus de l’extérieur que configurer votre serveur SSH sur le port 443 résoudra le problème du filtrage la plupart du temps.

3 réflexions sur “Remplacer TeamViewer sous Linux par VNC, SSH et un serveur relais transperceur de NAT

  1. Intéressant ! Il serait chouette de proposer une solution dans le cas ou Paul utilise Windows. Il semble se poser des questions, et commence juste à chercher des alternatives libres. Il est donc peu probable qu’il utilise déjà un OS libre, non ? Il existe sûrement des commandes à lancer avec le bon vieux cmd de Windows (ou bien il faut cliquer sur 20 boutons et lancer 30 fenêtres de configuration cachées…)

    • Ce serait intéressant hélas.. je ne connais pas Windows ! Si à tout hasard Paul veut travailler sous Windows il peut installer Bash for Windows, puisque les outils présentés ici sont principalement des outils Unix qui n’existent pas sous Windows 🙂

Laisser un commentaire